0

私はこれを行うことができます:

hadoop fs -text /path/to/result/of/many/reudcers/part* | hadoop fs -put - /path/to/concatenated/file/target.csv

ただし、HDFS ファイルがネットワーク経由でストリーミングされるようになります。クラスター自体でいくつかのファイルをマージするように HDFS に指示する方法はありますか?

4

1 に答える 1

1

私はあなたに似た問題を抱えています。HDFSファイルのマージオプションの数に関する記事がありますが、それらにはすべていくつかの詳細があります. このリストには、私の要件を満たすものはありません。これがあなたを助けることを願っています。

  • HDFS concat (実際には FileSystem.concat())。それほど古い API ではありません。最後のブロックがいっぱいになるには、元のファイルが必要です。
  • MapReduce ジョブ: おそらく、このテクノロジに基づいたソリューションを採用する予定ですが、セットアップに時間がかかります。
  • copyMerge - 私が見る限り、これは再びコピーされます。しかし、詳細はまだ確認していません。
  • ファイル クラッシュ - 繰り返しますが、MapReduce に似ています。

したがって、主な結果は、MapReduce のセットアップ速度が自分に合っていれば問題ありません。リアルタイムの要件がある場合、状況は複雑になっています。

私の「クレイジーな」アイデアの 1 つは、HBase コプロセッサ メカニクス (エンドポイント) を使用することです。これには、同じクラスターに Hbase があるため、ファイル ブロックの局所性情報が含まれます。「クレイジー」という言葉があなたを止めないなら、これを見てください: http://blogs.apache.org/hbase/entry/coprocessor_introduction

于 2013-09-18T17:34:46.000 に答える