gpt4 book ai didi

python - 从python hadoop映射器输出空白

转载 作者:行者123 更新时间:2023-12-02 21:48:31 45 4
gpt4 key购买 nike

输入文本就是这样,重复了十亿亿次:

value1 | foo="bar" value2 | value3

我在python中为基本的流作业编写了一个基本的映射器:
#!/usr/bin/env python
import sys
for line in sys.stdin:
line = line.replace('foo=','')
line = line.replace('"','') # kills double-quotes
print line
# alternatively, I have tried print >>sys.stdout, line

我是这样工作的;它运行无错误,但输出文件为空:
bin/hadoop jar contrib/streaming/hadoop-streaming.jar -file ~/mapper1.py -mapper mapper1.py -input hdfs:///rawdata/0208head.txt -output hdfs:///rawdata/clean0208.txt

我假设没有映射器,打印结果将仅打印到输出文件中。我现在怀疑print命令只是将输出打印到每个JavaVM的内存中,而没有任何明确的写回方式,它只是在VM中死掉了。

我写了一个基本的reducer,它只使用sys.stdin并按上面的“#alternatively”打印到sys.stdout。那也不起作用。

指导最欢迎。谢谢

最佳答案

我已按照以下步骤执行hadoop流作业:

1)首先,我创建了一个名为head.txt的文本文件,其中包含您提到的行。

value1 | foo="bar" value2 | value3

2)然后我保存了该文件,并使用以下命令将其放入hdfs:
hadoop fs -put /head.txt /head.txt

3)我将您的python代码复制粘贴到mapper.py文件中,保存后将其复制到hdfs:
hadoop fs -put /mapper.py /mapper.py

4)最后,我执行了以下hadoop流命令:
 hadoop jar /opt/hadoop/lib/hadoop-streaming-1.0.3.jar -D mapred.reduce.tasks=0 -file /mapper.py -mapper mapper.py -input /head.txt -output /out.txt
/opt/hadoop/lib/是我的hadoop库路径。您可以在此处添加路径。
如果您在 HADOOP_HOME文件中设置了 .bashrc,则无需提及 bin/hadoop

否则,您可以编写 bin/hadoop来执行作业。

这绝对适合您。我在 out.txt文件中得到以下输出。
value1 | bar value2 | value3

关于python - 从python hadoop映射器输出空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23072571/

45 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com