【发布时间】:2014-06-09 20:45:37
【问题描述】:
对于流式作业,您必须指定输出目录。如果我想将映射器的结果输出到标准输出而不是 HDFS 目录怎么办。这可能吗?我想这样做,以便可以通过管道传输到其他程序。
【问题讨论】:
标签: python apache hadoop mapreduce
对于流式作业,您必须指定输出目录。如果我想将映射器的结果输出到标准输出而不是 HDFS 目录怎么办。这可能吗?我想这样做,以便可以通过管道传输到其他程序。
【问题讨论】:
标签: python apache hadoop mapreduce
我在 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。
【讨论】: