0

最近 Pig を使い始めたばかりで、構造化データの構文を理解するのに苦労しています。以下のデータモデルの例を考えると、Hive、Pig、または「その他」のどちらが問題により適しているでしょうか?

データ・モデル:

Item
 > id<long>
 > description<string>
 > source<collection of following>
     > source_id<long>
     > source_name<string>
     > relevant_link<collection of strings>
         > link_id<string>

Link
 > link_id<string>
 > metadata1<string>
 > metadata2<string>

一般的な操作:

  • さまざまな形式からこの形式にデータをインポートする
  • データのクエリ (並べ替え、集計、サンプル、要約) (全員がその言語の専門家ではないチームが行うことが望ましい)
  • さまざまなフィルターを使用して、さまざまな形式で結合およびエクスポートします

これは、大規模なデータセット (150 ~ 500 GB の生のテキスト データ) の基本的なデータ操作です。

問題/質問:

  • Pig は、そのリンクに参加する際に私たちに挑戦をもたらしました (Pig のコレクションのコレクションは、非常に抽象的になるバッグのバッグです)。
  • Hive はこれらのコレクションのコレクションを管理するのに適していますか?
  • 多くの「データ変換」アクティビティが予想されますが、データを SQL のような形式に簡単に適合させることができるため、Hive は使いやすいソリューションになりますか?
4

1 に答える 1

1

Pangoolを試すことができます。 Map Reduce コードは Java であり、構造化データの操作を簡素化し、タプルとシリアライゼーションの概念に依存しています。特定のケースでは、基本的に JSON である Avro オブジェクトでカスタム シリアル化を使用できます。また、異なるマッパーで処理する必要があるサイド ジョインと複数の入力の記述を簡素化します。

つまり、link_id をキーとして発行する Link 用の Pangool マッパーと、それ自体で link_id を発行する Item 用の別の Pangool マッパーです。しかし、それは遅いかもしれません。

マップ サイド ジョインが可能な場合 (リンク ファイルがメモリに対して十分小さい場合)、それをメイン コードのシリアライズ可能な Java オブジェクトに入れてマッパーに渡すことができます。これにより、作業が非常に簡単になります。

于 2013-06-07T16:48:41.220 に答える