1

c#.net用于编写 map 和 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标志指定输出文件夹,而不是文件。由于可以有多个reducer,每个reducer都会在这个文件夹中生成一个文件。

在这种情况下,您有一个 reducer,它生成了一个文件:part-00000. 如果有更多的 reducer,它们将被命名为part-00001,part-00002等。

该命令cat /example/apps/output.txt/part-00000将显示您的输出。将来,不要命名您的输出文件夹something.txt,因为这只会让您和其他人感到困惑:)

于 2013-02-24T05:26:55.330 回答