将Hadoop输入路径作为参数传递给Python

时间:2019-04-03 20:36:02

标签: python-3.x hadoop mapreduce parameter-passing hadoop-streaming

嗨,我正在尝试通过Python完成map reduce任务,以便我的程序使用2个参数,它们是字符串和文件夹路径。它应该扫描目录中的所有文件夹,并在其中找到字符串。

我从终端运行我的代码,如下所示:

python mapper.py "AA" /home/habil/Downloads/hadoop_test/ | python reducer.py

它给我的结果如下:

Filename    Count
--------    ---------
seq1.txt    153
seq2.txt    48
seq3.txt    83
seq4.txt    93
seq5.txt    102

但是我应该在hdfs中实现它,我对hdfs命令的输入感到困惑,因此我必须给我的代码指定路径路径(以获取文件名),并且hadoop也需要hdfs -input。当我运行以下命令时,出现错误:

 hadoop jar /usr/local/hadoop/hadoop-2.9.2/share/hadoop/tools/lib/hadoop-streaming-2.9.2.jar  -mapper "mapper.py AA /assignment/hadoop_test/" -reducer reducer.py -input /assignment/hadoop_test/  -output /assignment/hadoop_test/output

如何解决此问题,或者如何直接将Hadoop的输入路径作为参数传递给python中的代码?任何帮助或提示表示赞赏。预先感谢。

1 个答案:

答案 0 :(得分:0)

您可以考虑使用sys.stdin来读取mapper.py的输出

import sys
print("You typed", sys.stdin.read())