1

c#.netmap と reduce 関数の記述に使用しています。基本的には、ここに示されている例に従いました。

最終命令

Hadoop jar hadoop-streaming.jar -files "hdfs:///example/apps/map.exe,hdfs:///example/apps/reduce.exe" -input "/example/apps/data.csv" -output "/example/apps/output.txt" -mapper "map.exe" -reducer "reduce.exe"

ジョブは正常に実行されましたここに画像の説明を入力

インタラクティブJSモードから、私が書くと

js> #cat /example/apps/output.txt 

cat: ファイルが存在しません: /example/apps/output.txt

一方 :

js> #ls /example/apps/output.txt 

3 アイテムが見つかりました

-rw-r--r-- 3 xxxx supergroup 0 2013-02-22 10:23 /example/apps/output.txt/_SUCCESS

drwxr-xr-x - xxxx supergroup 0 2013-02-22 10:22 /example/apps/output.txt/_logs

-rw-r--r-- 3 xxxx supergroup 0 2013-02-22 10:23 /example/apps/output.txt/part-00000 

私が犯している間違いは何ですか?出力を確認するにはどうすればよいですか?

4

1 に答える 1

1

-outputフラグは、ファイルではなく、出力フォルダーを指定します。複数のレデューサーが存在する可能性があるため、それぞれがこのフォルダーにファイルを生成します。

この場合、1 つのレデューサーがあり、1 つのファイルが生成されます: part-00000. レデューサーがさらにある場合はpart-00001part-00002、 などの名前が付けられます。

コマンドcat /example/apps/output.txt/part-00000は出力を表示します。将来的には、出力フォルダーsomething.txtに名前を付けないでください。あなたと他の人を混乱させるだけです:)

于 2013-02-24T05:26:55.330 に答える