我将大二进制文件拆分为(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?
答案 0 :(得分:1)
因此。我找到了解决方案。也许并不是更好 - 但它正在发挥作用。
因此。我已经创建了一个带有引导操作的EMR作业流程
--bootstrap-action joinfiles.sh
在joinfiles.sh中我正在使用wget从S3下载我的文件,使用常规cat a b c>加入它们。 ABC。
之后我添加了一个s3distcp,它将结果复制回S3。 (样本可以在https://stackoverflow.com/a/12302277/658346找到)。 就这些。