【问题标题】:Send output of Hadoop streaming job to STDOUT将 Hadoop 流作业的输出发送到 STDOUT
【发布时间】:2014-06-09 20:45:37
【问题描述】:

对于流式作业,您必须指定输出目录。如果我想将映射器的结果输出到标准输出而不是 HDFS 目录怎么办。这可能吗?我想这样做,以便可以通过管道传输到其他程序。

【问题讨论】:

    标签: python apache hadoop mapreduce


    【解决方案1】:

    我在 hadoop 中编写了许多流式作业。目前尚不清楚您希望自定义管道在这里做什么。

    让我们仔细看看,假设你用 python 编写了 mapper/reducer(例如,从 .py 更改为 .sh 用于 shell 脚本):

    hadoop jar hadoop-*streaming*.jar 
    -file mapper.py    -mapper mapper.py \
    -input /user/myuser/input/* -output /user/myuser/output
    

    在这种情况下,输出将发送到 hdfs - 这就是您所说的想要的。

    如果我们改为将输出发送到标准输出 - 那么问题是:您如何处理由多个映射器生成的输出

    这里有一个想法:为什么不在这里“顺其自然”呢?让输出转到 hdfs。添加一个 TotalOrderPartitioner 减速器来组合所有输出文件。然后你 csn 对输出结果执行 hdfs -cat。

    【讨论】:

    • 我不能代表提问者,但我想使用 stdout 而不是 hdfs 因为我正在运行一个输出非常小的聚合任务,所以它看起来超级浪费(就开销,也只是块大小)将它放在 HDFS 上约 128 字节。
    猜你喜欢
    • 2014-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-10
    • 1970-01-01
    相关资源
    最近更新 更多