我已经将大的二进制文件分割成(2 2Gb)块,并将其上传到亚马逊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的课程,这不是我的输出的一部分...
所以。如何在文件拆分前加入?
发布于 2012-09-28 16:19:32
所以。我找到了一个解决方案。也许不是更好--但它是有效的。
所以。我已经使用bootstrap操作创建了一个EMR作业流
--bootstrap-action joinfiles.sh在joinfiles.sh中,我使用wget从S3下载文件片段,使用常规cat a b c> abc连接它们。
之后,我添加了一个将结果复制回S3的s3distcp。(样本可以在https://stackoverflow.com/a/12302277/658346上找到)。这就是全部。
https://stackoverflow.com/questions/12055595
复制相似问题