结合AWS EMR输出

时间:2014-11-13 22:39:54

标签: hadoop amazon-web-services amazon-s3 emr amazon-emr

我使用自定义映射程序运行测试AWS EMR作业,但使用NONE作为reducer。我在13个单独的“部分”文件中获得了(预期)输出。如何将它们组合成一个文件?

我不需要以任何特殊方式聚合数据,我不关心它是否被排序,任意重新排序或按顺序排列。但我想有效地将​​数据放回一个文件中。我是否必须手动执行此操作,或者是否有办法将其作为EMR群集的一部分?

我很奇怪,没有默认选项或某种自动步骤可用于此。我已经阅读了一些有关Identity Reducer的内容。它是否符合我的要求,如果是,我如何在通过EMR控制台启动集群时使用它?

我的数据在S3中。


修改

非常清楚,我可以在完成工作后在所有输出部分上运行cat,如果这是我必须做的事情。本地或EC2实例或其他任何内容。这真的是每个人都做的吗?

1 个答案:

答案 0 :(得分:3)

如果映射器部件文件的输出本身很小,那么您可以尝试使用hadoop fs -getmerge将它们合并到本地文件系统:

hadoop fs -getmerge s3n://BUCKET/path/to/output/ [LOCAL_FILE]

然后将合并的文件放回S3:

hadoop fs -put [LOCAL_FILE] s3n://BUCKET/path/to/put/

要使上述命令起作用,您应该在core-site.xml

中设置以下属性
<property>
  <name>fs.s3n.awsAccessKeyId</name>
  <value>YOUR_ACCESS_KEY</value>
</property>

<property>
  <name>fs.s3n.awsSecretAccessKey</name>
  <value>YOUR_SECRET_ACCESS_KEY</value>
</property>