2017-09-25 5 views
0

私は小さなファイルをhdfsに結合しようとしています。これは単に歴史的な目的のためであり、必要に応じて大きなファイルが逆アセンブルされ、hadoopテーブルのデータを作成するプロセスが実行されます。これを簡単に達成する方法はありますか?たとえば、1日目は100個の小さなファイルを受け取り、ファイルに結合し、2日目に先に作成したファイルにさらに2つのファイルを追加/追加します。小さなファイルhadoop

+0

「ハープテーブルのために」...あなたはハイヴを意味しますか? HBase? Hadoopには "テーブル"の概念がありません –

+0

はい、ハイブを意味します。 –

答えて

1

ファイルがすべて「スキーマ」と同じ場合は、 CSVやJSONのように。次に、非常に基本的なPig/Sparkの仕事を書いて小さなファイルのフォルダ全体を読んだり、別の場所に書き込んだりすると、すべてのファイルをHDFSブロックサイズに基づいてより大きなサイズにマージする可能性が非常に高いでしょう。

また、Hiveについても言及しましたので、小さなファイルには外部テーブルを使用し、別のテーブルを作成するにはCTASクエリを使用して、Pigと同じようにMapReduceジョブを作成します。

IMO、可能であれば、最適な解決策は、小さなファイルをより大きなファイルにバッチしてHDFSにダンプする、システムをHadoopの "上流"にセットアップすることです。 Apache NiFiは、この目的に役立つツールです。

+0

私は豚と火花の両方をゴーグルされており、その結果は啓蒙的なものではありませんでした。たとえば、PigがHadoopを使用していて、ファイルを追加するための "推奨された"解決策がないという記事が見つかりました。このアイテムに役立つチュートリアルをご存知ですか? –

+0

HDFSは、ファイルの追加をファーストクラスでサポートしていません。複数のファイルを読み込み、それらを他のファイルに圧縮/マージします。 –

+0

ブタについては、 'STORE'と' LOAD'コマンドだけが必要です。あなたがJava/Pythonのバックグラウンドを持っているなら、Sparkは、より "プログラミングにやさしい"ものです。そして言及したように、Hiveは、あなたが他のものに対して選択肢から 'CREATE TABLE'を使用し、ORCやParquetのような別の形式を使うこともできます –

関連する問題