質問

私は友人と、Hbase を利用してデータを保存するプロジェクトに取り組んでいます。何か良いクエリ例はありますか?SQL の世界では単純なクエリを作成できるのに、RowResult のリストを反復処理するために大量の Java コードを作成しているようです。何かが足りないのでしょうか?それとも Hbase に何かが足りないのでしょうか?

役に立ちましたか?

解決

私たちの多くと同じように、bigtable と HBase は実際には大規模なスパース データ セットを効率的に格納および取得するための列指向のストレージ モデルであるにもかかわらず、それを単なる別の RDBMS のように扱うという間違いを犯していると思います。これは、たとえば、理想的には多対 1 の関係を 1 つの行内に格納することを意味します。クエリは非常に少数の行を返しますが、(潜在的に) 多くのデータポイントが含まれている必要があります。

おそらく、保存しようとしているものについて詳しく教えていただければ、bigtable/HBase の処理方法に一致するようにスキーマを設計するお手伝いをできるかもしれません。

HBase の動作が「従来の」RDBMS と異なるものの概要については、次の素晴らしい記事を参照してください。 マッチングインピーダンス:HBase を使用する場合 ブライアン・ダクスベリー著。

他のヒント

クエリ言語と JDBC ドライバーを使用して HBase にアクセスすることは可能です。Paul Ambrose は、これを行うのに役立つ HBQL というライブラリを hbql.com でリリースしました。いくつかのプロジェクトで使用しましたが、うまく機能しています。もちろん完全な SQL にアクセスすることはできませんが、少し使いやすくなります。

Hadoop と Hbase を調べました。 ショーン と言いましたが、クラスタ化された JDBC 準拠のデータベースという、私が実際に望んでいたものは得られないことにすぐに気づきました。

次のようなものを使用した方が良いと思います C-JDBC または HA-JDBC それは私が求めていたもののように思えます。(個人的には、ドキュメントを読む以外にこれらのどちらについても進んでいないため、どちらが良いかはわかりません。)

Apacheを検討してみることをお勧めします ハイブ このプロジェクトは、SQL 風の言語を実装する HBase (分散データベースであるという意味で) に似ています。

ショーンさん、返信ありがとうございます。返信が遅くなってごめんなさい。私はよく HBase を RDBMS のように扱うという間違いを犯します。実際、そのせいでコードを書き直さなければならなくなることがよくありました。学んだことを忘れるのはとても難しいことです。

現在テーブルは4つだけです。この場合、私の経歴を考慮すると、これは非常に少数です。ちょうど使いたいと思っていたのですが、 いくつかの RDBMS 機能は主に列指向のストレージ モデルに準拠しています。

皆さんが HBase を使用していると聞いてうれしいです。私はどう見ても専門家ではありませんが、役立つかもしれないことをいくつか紹介します。

  • HBase は BigTable に基づいているか、BigTable からインスピレーションを受けており、AppEngine によって DB API として公開されているため、 ドキュメントを閲覧する Web アプリに取り組んでいる場合には、非常に役立つはずです。

  • Web アプリで作業していない場合、説明している種類の反復処理は通常、map/reduce によって処理されます (望ましくない値は出力しないでください)。イテレータを使用して値をスキップすると、アプリケーションが HBase サイズのデータ​​ セットでボトルネックになることが事実上保証されます。まだ SQL で考えている場合は、cloudeera の pig チュートリアルと hive チュートリアルを確認してください。

  • 基本的に、HBase/SQL の精神的な違い (非 Web アプリケーションの場合) は、「計算をデータに送信する。データを計算に送信しない」という点に要約されます。コーディング中にそのことを念頭に置けば、大丈夫です:-)

よろしく、

デビッド

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top