hadoop - 如何在单个文件而不是 Google Cloud 上的 Hadoop 集群中的多个文件中获取 Mapreduce 输出?

标签 hadoop google-cloud-platform

当我在本地 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/

相关文章:

hadoop - Mapreduce 自定义格式。现实世界中是否有很多情况可以编写自定义输入和输出格式?

hadoop - 运行示例 wordcount "Exception in thread "main"

hadoop - Sqoop 2 提供了哪些 Sqoop 1 没有提供的内容?

Hadoop 纱 : Failed to launch container

google-cloud-platform - 谷歌云在VPC内运行?

php - 保护可在本地部署的 PHP/k8s 应用程序

google-cloud-platform - 了解 Google Cloud IAM 政策 - 它是否不仅仅是一个额外的层

google-bigquery - 如何使用 StackDriver API v2 查询 BigQuery 使用情况?

google-app-engine - Google App Engine 模块主机名 : not an App Engine context

hadoop - 对HDFS的概念理解