首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让s3distcp与换行符合并

如何让s3distcp与换行符合并
EN

Stack Overflow用户
提问于 2015-07-14 05:20:22
回答 2查看 1.1K关注 0票数 5

我有数百万个小的单行s3文件,我希望将它们合并在一起。我已经把s3distcp语法写下来了,但是我发现在合并文件之后,合并后的文件集中没有包含换行符。

我想知道s3distcp是否包含强制换行符的选项,或者是否有其他方法可以在不直接修改源文件(或复制它们并执行相同操作)的情况下完成此操作。

EN

回答 2

Stack Overflow用户

发布于 2015-08-28 08:52:10

如果文本文件以唯一的字符序列开头/结尾,则可以首先使用s3distcp将它们合并为一个文件(我通过将--targetSize设置为一个非常大的数字来完成此操作),然后使用sed和Hadoop streaming添加新行;在下面的示例中,每个文件都包含一个json (文件名都以0开头),并且sed命令会在每个}{实例之间插入一个换行符

代码语言:javascript
复制
hadoop fs -mkdir hdfs:///tmpoutputfolder/
hadoop fs -mkdir hdfs:///finaloutputfolder/
hadoop jar lib/emr-s3distcp-1.0.jar \
               --src s3://inputfolder \
               --dest hdfs:///tmpoutputfolder \
               --targetSize 1000000000 \
               --groupBy ".*(0).*"
hadoop jar /home/hadoop/contrib/streaming/hadoop-streaming.jar \
               -D mapred.reduce.tasks=1 \
               --input hdfs:///tmpoutputfolder \
               --output hdfs:///finaloutputfolder \
               --mapper /bin/cat \
               --reducer '/bin/sed "s/}{/}\n{/g"'
票数 2
EN

Stack Overflow用户

发布于 2021-08-28 11:30:10

我有相同的probrem和sed命令中断文件夹结构。

s3distcp只是一个MapReduce程序。

因此,另一种方法是编写一个合并的MapReduce程序,并添加新的行,更多您喜欢的行为。

或者你可以从互联网上搜索这样的MapReduce程序,GitHub存储库,我创建了其中一个github.com/ksmaxeed/s3distcp。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31393706

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档