1

現在、私は EDW (エンタープライズ データ ウェアハウス) から約 10 個のテーブルを Hadoop に取り込んでいます。これらのテーブルは、スター スキーマ モデルに密接に関連しています。私は Sqoop を使用してこれらすべてのテーブルを移動し、csv ファイルを含む 10 個のディレクトリを作成しました。

MR の仕事を開始する前に、これらのファイルを保存するためのより良い方法を検討しています。MR ジョブに取り組む前に、何らかのモデルに従うか、集計を作成する必要がありますか? 私は基本的に、関連するデータを一緒に保存する方法を検討しています。

検索して見つけたほとんどのものは、簡単なcsvファイルを保存し、opencsvでそれらを読み取ることです。csvファイルだけでなく、もう少し複雑なものを探しています。別の形式に移行する方が csv よりもうまく機能する場合、それは問題ありません。

まとめると、MR を快適に使用するために、一連の関連データを HDFS に保存する最善の方法です。

4

3 に答える 3

1

これらのファイルを csv に保存しても問題ありません。テキスト出力形式を使用してこれらのファイルを処理できるため、特定の区切り文字を使用してハイブから読み取ることもできます。コンマをパイプ ("|") に変換したくない場合は、区切り記号を変更できます。また、通常、hadoop には大きなファイルが必要ですが、これらのファイルを分割するのに十分な大きさで、各ファイル パーティションのサイズが数 100 ギガの場合は、これらのファイルをパーティションに基づいて別のディレクトリに分割することをお勧めします。桁。

また、正規化された小さなテーブルを多数持つよりも、ほとんどの列を単一のテーブルに持つ方が良いでしょう。ただし、それはデータのサイズによって異なります。また、後でテーブルに小さな変更を加えることが難しくなるため、データをコピー、移動、または作成するたびに、アプリケーションですべての制約チェックを行うようにしてください。小さな変更でもファイル全体を変更する必要があります。

于 2013-03-12T02:30:36.750 に答える
1

Hive パーティショニングとバケット化の概念を使用して、特定の列に基づいて (ノードではなく、ファイルとフォルダーに) 類似のデータをまとめるために効果的に使用できます。PartitioningBucketingの便利なチュートリアルを次に示します。

于 2013-03-18T02:18:48.320 に答える