6

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

我试过跑

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

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

我怎么能做到这一点?

PS 我尝试将 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 这不是我的输出的一部分......

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

4

1 回答 1

1

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

所以。我创建了一个带有引导操作的 EMR 作业流程

--bootstrap-action joinfiles.sh

在那个 joinfiles.sh 中,我使用 wget 从 S3 下载我的文件片段,使用常规 cat abc > abc 加入它们。

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

于 2012-09-28T08:19:32.270 回答