4

HDFS には多くのファイルがあり、そのすべてが 1 つの CSV ファイルを含む zip ファイルです。ストリーミング ジョブを実行できるように、ファイルを解凍しようとしています。

私は試した:

hadoop jar /usr/lib/hadoop-mapreduce/hadoop-streaming.jar \
    -D mapred.reduce.tasks=0 \
    -mapper /bin/zcat -reducer /bin/cat \
    -input /path/to/files/ \
    -output /path/to/output

ただし、エラーが発生します ( subprocess failed with code 1) 単一のファイルで実行しようとしましたが、同じエラーです。

何かアドバイス?

4

4 に答える 4

1

問題の根本的な原因は、(データを受信する前に) Hadoop から多くの (テキスト) 情報を取得することです。

例 hdfs dfs -cat hdfs://hdm1.gphd.local:8020/hive/gphd/warehouse/my.db/my/part-m-00000.gz | zcat | wc -l も機能しません。「gzip: stdin: not in gzip format」というエラー メッセージが表示されます。

したがって、この「不要な」情報はスキップする必要があります。私の場合、86行をスキップする必要があります

したがって、私の 1 行のコマンドは次のようになります (レコードをカウントするため): hdfs dfs -cat hdfs://hdm1.gphd.local:8020/hive/gphd/warehouse/my.db/my/part-m-00000.gz |テール -n+86 | zcat | トイレ -l

注:これは回避策(実際の解決策ではありません)であり、「86」のため非常に醜いですが、正常に動作します:)

于 2014-09-30T16:42:11.450 に答える
0

何らかの理由で HDFS 内のファイルを解凍/解凍する簡単な方法

hadoop fs -text /hdfs-path-to-zipped-file.gz | hadoop fs -put - /hdfs-path-to-unzipped-file.txt
于 2014-06-29T16:13:17.383 に答える
-2

Hadoop は gzip 形式で圧縮されたファイルを読み取ることができますが、それは zip 形式とは異なります。Hadoop は zip ファイルを読み取ることができません。

于 2013-08-24T23:25:54.427 に答える