Hadoop流处理失败,出现java.io.FileNotFoundException
我写了一个只使用 Python 的 MapReduce 程序,它可以从标准输入读取数据并处理这些数据,最后输出一些结果。在本地运行的时候一切都很顺利。但是,当我尝试在 Hadoop 上运行它时,却出现了找不到文件的错误。它找不到 mapper.py 这个文件。此外,这是我用来运行这个脚本的命令:
hadoop jar hadoop-streaming-1.1.1.jar -D mapred.reduce.tasks=0 -file "$PWD/mapper.py" -mapper "$PWD/mapper.py" -input "relevance/test.txt" -output "relevance/test_output_8.txt"
文件 test.txt 也已经复制到 HDFS 里了。
错误信息:
java.io.FileNotFoundException: File /data1/mapr-hadoop/mapred/local/taskTracker/***********/job_201405060940_908425/attempt_201405060940_908425_m_000000_0/work/******/mapper.py does not exist.
有没有人能帮我找出我漏掉了什么?
1 个回答
0
去掉文件路径中的 $PWD 解决了问题。可以使用的命令是:
hadoop jar hadoop-streaming-1.1.1.jar -D mapred.reduce.tasks=0 -file "mapper.py" -mapper "mapper.py" -input "relevance/test.txt" -output "relevance/test_output_8.txt"
另外,确保路径是用 " " 包起来的。我在网上看到很多例子没有加 " "。