使用Python的Hadoop EMR
我正在使用Hadoop流处理来运行我的Python编写的映射器和归约器代码,以执行一个Mapreduce任务。我有一些输入数据存放在s3上,我想用这些数据来进行这个任务。然而,当我运行这个命令时,
bin/hadoop jar contrib/streaming/hadoop-*streaming*.jar -file aish1/mapperi.py
-mapper aish1/mapperi.py -file aish1/reduceri.py -reducer aish1/reduceri.py
-file s3://INLOCATION -input s3://INLOCATION -output s3://OUTLOCATION
我遇到了一个错误:
File: /home/hadoop/s3:/INLOCATION does not exist, or is not readable.
Streaming Command Failed!
我不明白为什么它在我的s3输入位置前面加上了/home/hadoop/。如果有人能帮我解决这个问题,我将非常感激!
1 个回答
2
不要在输入时使用 -file
这个选项。-file
这个参数是用来处理本地文件的,意思是你想把本地的文件上传到HDFS(Hadoop分布式文件系统)。而在你的情况下,输入数据已经在合适的位置了。
你需要修改你的命令:
bin/hadoop jar contrib/streaming/hadoop-*streaming*.jar -file aish1/mapperi.py
-mapper aish1/mapperi.py -file aish1/reduceri.py -reducer aish1/reduceri.py
-input s3://INLOCATION -output s3://OUTLOCATION