当我在本地 hadoop 多节点集群上运行我的 jar 时,我可以看到 reducer 输出,并且每个作业都是一个文件。
但是当我在谷歌云上运行同一个 jar 时,我得到了多个输出文件 (part-r-0000*)。相反,我需要的是将所有输出写入单个文件。我该怎么做?
最佳答案
嗯,一个简单的解决方案是将作业配置为仅使用一个 reducer 运行。似乎在谷歌云上的默认设置是不同的。请参阅此处了解如何执行此操作:Setting the Number of Reducers in a MapReduce job which is in an Oozie Workflow
处理这个问题的另一种方法是在 map reduce 作业的末尾运行一个连接脚本,将所有 part-r 文件拼凑在一起,例如
cat *part-r* >>alloutput
如果您有 header 并且您需要先复制到本地,则可能会更复杂一些。
关于hadoop - 如何在单个文件而不是 Google Cloud 上的 Hadoop 集群中的多个文件中获取 Mapreduce 输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27167209/