1

HBase用のクエリ言語を書くことを考えています。このクエリ言語を使用すると、ユーザーはフィルターを適用したり、行間で関数をマップしたり、データを集約/削減したりできるようになります。(さらに、これはドメイン固有のクエリ言語です。)HBaseを使用している場合によくあることですが、データセットが非常に大きいと想像してください。

私の質問は、さまざまなフィルタリングとマッピングおよび集計の間で、中間データをどのように処理する必要があるかです。データをファイルシステムに保存する必要がありますか?それは少しもったいないようです。関数を作成して、すべてを一度に実行する必要がありますか?

それは私が達成したいことと私のクエリ言語がどのようになるかに少し依存することを理解しています。しかし、この一般的な問題は通常どのように処理されますか?共有するためのヒントや洞察はありますか?この問題を扱っている良い記事/リソースはありますか?

4

2 に答える 2

1

Cascadingをご覧ください。

いくつかのマップ削減ジョブを接続したい場合に非常に便利であることがわかりました。

Cascading Hbase タップを作成してパイプに接続し、 Cascading APIを使用して関数、アグリゲーター、グループ化などを適用できます。

于 2012-10-19T14:07:01.497 に答える
1

PigHiveはどちらもほぼこれを行います (HBase でも動作します)。彼らの働き方は2つあります。まず、各 MR フェーズにできるだけ適合しようとします。ただし、これが不可能な場合もあります。たとえば、グループ、変換、別のグループを一度に実行することはできません。中間データについては、HDFS に書き出すだけです。これが最も簡単な方法ですが、妥当な量のデータをディスクに書き込む必要があります。完了後に中間データを削除するだけです。

また、車輪を再発明しますか? Pig についてはほぼ説明しました。あなたの言語を Pig Latin に「コンパイル」する価値さえあるかもしれません。

于 2012-10-19T23:57:54.313 に答える