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

时间:2012-08-21 13:10:56

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

我将大二进制文件拆分为(2Gb)块并将其上传到Amazon S3。 现在我想将它连接回一个文件并使用我的自定义

进行处理

我试图运行

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

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

我怎么能这样做?

P.S。我试图将猫作为流式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不属于我的输出...

因此。如何在文件之前加入splitted?

1 个答案:

答案 0 :(得分:1)

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

因此。我已经创建了一个带有引导操作的EMR作业流程

--bootstrap-action joinfiles.sh

在joinfiles.sh中我正在使用wget从S3下载我的文件,使用常规cat a b c>加入它们。 ABC。

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