合并aws emr输出

qnakjoqk  于 2021-05-30  发布在  Hadoop
关注(0)|答案(1)|浏览(384)

我用一个自定义Map器运行了一个测试aws emr作业,但是没有一个作为缩减器。我在13个单独的“part”文件中得到了(预期的)输出。如何将它们合并到一个文件中?
我不需要以任何特殊的方式聚合数据,也不关心数据是否被排序、任意重新排序或按顺序保留。但我想有效地将数据放回一个文件中。我必须手动完成吗,或者作为emr集群的一部分,有什么方法可以完成吗?
对我来说很奇怪的是,没有一个默认选项或某种自动步骤可用于此。我读过一些关于身份缩减器的文章。它做了我想要的吗?如果是的话,在通过emr控制台启动集群时如何使用它?
我的数据是s3。
编辑
说得很清楚,我可以跑 cat 如果这是我必须要做的,那么在工作完成后的所有输出部分上。在本地,或者在ec2示例上,或者别的什么。每个人都这么做吗?

scyqe7ek

scyqe7ek1#

如果Map器零件文件本身的输出很小,则可以尝试使用 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 ```

fs.s3n.awsAccessKeyId
YOUR_ACCESS_KEY

相关问题