【问题标题】:hadoop with mrjob piping on shell外壳上带有 mrjob 管道的 hadoop
【发布时间】:2012-05-14 00:21:51
【问题描述】:

我有一个关于 mrjob 的问题。 我在 3 个数据节点上使用 hadoopcluster,使用一个名称节点和一个 工作跟踪器。 从一个漂亮的示例应用程序开始,我写了类似的东西 关注

first_script.py: 
        for i in range(1,2000000): 
                 print "My Line "+str(i) 

这显然是在向标准输出写入一堆行 辅助脚本是 mrjobs Mapper 和 Reducer。 我尝试从 unix (GNU) 调用:

python first_script| python second_script.py   -r hadoop 

这完成了工作,但它正在将输入上传到 hdfs 完全地。就在所有东西都上传的时候,他开始了 第二份工作。 所以我的问题是: 是否可以强制流? (比如发送 EOF?) 还是我搞错了?

【问题讨论】:

    标签: unix hadoop pipe mrjob


    【解决方案1】:

    显然你早就忘记了这一点,但我还是会回复:不,不可能强制流。整个 hadoop 编程模型是将文件作为输入和输出文件(并可能产生副作用,例如将相同的东西上传到数据库)。

    【讨论】:

      【解决方案2】:

      如果您澄清您想要实现的更多目标,这可能会有所帮助。 但是,听起来您可能希望定期处理管道的内容,而不是等到流完成。不能强制流。

      管道的读者(您的second_script.py)需要将其标准输入分成块,或者使用

      【讨论】: