使用Python的Hadoop EMR

0 投票
1 回答
578 浏览
提问于 2025-04-18 10:26

我正在使用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

撰写回答