2 つの bzip2 ファイルをマージしたいと考えています。1 つを別のものに追加しようとしました:cat file1.bzip2 file2.bzip2 > out.bzip2
これは機能しているように見えます (このファイルは正しく解凍されています) が、このファイルを Hadoop 入力ファイルとして使用したいのですが、破損したブロックに関するエラーが発生します。
解凍せずに 2 つの bzip2 ファイルをマージする最良の方法は何ですか?
2 つの bzip2 ファイルをマージしたいと考えています。1 つを別のものに追加しようとしました:cat file1.bzip2 file2.bzip2 > out.bzip2
これは機能しているように見えます (このファイルは正しく解凍されています) が、このファイルを Hadoop 入力ファイルとして使用したいのですが、破損したブロックに関するエラーが発生します。
解凍せずに 2 つの bzip2 ファイルをマージする最良の方法は何ですか?
連結されたbzipの処理はトランクで修正されているか、https ://issues.apache.org/jira/browse/HADOOP-4012である必要があります。動作する例があります:https ://issues.apache.org/jira/browse/MAPREDUCE-477?focusedCommentId = 12871993&page = com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel# action_12871993最近のバージョンのHadoopを再実行すると、問題ないはずです。
両方を新しい bz2 に圧縮 (保存) できますか? 2 つのアーカイブの内容を取得するには 3 回の解凍が必要ですが、シナリオによってはうまくいく可能性があります。
Hadoop 入力として使用するためにファイルをマージする必要はありません。
file_name*
- パターン;file_name_1,file_name_2
- 入力のリスト。そして、Hadoop がそれを処理します。
それ以外の場合は、Hadoop のストリーミングを使用してそれらを (解凍して) マージできます。
次のようなパターンでファイルのリストを生成できます。
FILES_LIST="'ls -m template*.bz2'"
INPUT_FILE="'echo $FILES_LIST | tr -d ' ' '"
内側の'
引用符は異なる必要があります。$INPUT_FILE
CLI 経由でスクリプトに変数として渡すことができます。
また、CombineFileInputFormatクラスを InputFormat と見なします。