amazon-s3 - EMR 如何将文件合并为一个?

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

我已将大型二进制文件拆分为 (2Gb) block 并将其上传到 Amazon S3。 现在我想将其重新连接到一个文件并使用我的自定义进行处理

我尝试过运行

elastic-mapreduce -j $JOBID -ssh \
"hadoop dfs -cat s3n://bucket/dir/in/* > s3n://bucket/dir/outfile"  

但由于 -cat 将数据输出到我的本地终端而失败 - 它无法远程工作...

我怎样才能做到这一点?

附注我尝试将 cat 作为流式 MR 作业运行:

den@aws:~$ elastic-mapreduce --create --stream --input s3n://bucket/dir/in \
--output s3n://bucket/dir/out --mapper /bin/cat --reducer NONE

这项工作已成功完成。但。我在 dir/in 中有 3 个文件部分 - 现在我在/dir/out 中有 6 个文件部分

part-0000
part-0001
part-0002
part-0003
part-0004
part-0005

文件 _SUCCESS ofcource 不是我输出的一部分...

所以。如何加入之前分割的文件?

最佳答案

所以。我找到了解决方案。也许不是更好 - 但它正在发挥作用。

所以。我已经使用引导操作创建了一个 EMR 作业流程

--bootstrap-action joinfiles.sh

在 joinfiles.sh 中,我使用 wget 从 S3 下载文件片段,使用常规 cat a b c > abc 将它们连接起来。

之后我添加了一个 s3distcp,它将结果复制回 S3。 (示例可以在: https://stackoverflow.com/a/12302277/658346 找到)。 就这些。

关于amazon-s3 - EMR 如何将文件合并为一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12055595/

相关文章:

mysql - 如何通过技能让 Alexa 运行 MySQL 查询

linux - Hadoop Streaming 没有正确编码字符

hadoop - 多节点Hadoop从节点无法访问主节点上的jar文件

web-services - 亚马逊休息服务认证和安全

.net - 如何使用 .NET HttpClient 上传到 Amazon S3 而不使用他们的 SDK

email - 使用 AWS 设置 Sendgrid

python - Distcp 与 Hadoop 流作业

go - 在没有凭证的情况下使用AWS SDK for Go中的S3客户端

amazon-web-services - 亚马逊 AWS EC2 Go 语言

python - 尝试从 AWS Lambda 连接到 Boto3 客户端并接收超时