如何在单个作业中使用Spark写入依赖于键的多个输出.
相关:通过键Scalding Hadoop写入多个输出,一个MapReduce作业
例如
sc.makeRDD(Seq((1, "a"), (1, "b"), (2, "c")))
.writeAsMultiple(prefix, compressionCodecOption)
Run Code Online (Sandbox Code Playgroud)
确保cat prefix/1
是
a
b
Run Code Online (Sandbox Code Playgroud)
并cat prefix/2
会
c
Run Code Online (Sandbox Code Playgroud)
编辑:我最近添加了一个新的答案,其中包括完整的导入,皮条客和压缩编解码器,请参阅/sf/answers/3228263111/,除了之前的答案,这可能会有所帮助.
我们有许多需要组合的小文件.在Scalding中,您可以使用TextLine
文本行来读取文件.问题是我们每个文件得到1个映射器,但我们想要组合多个文件,以便它们由1个映射器处理.
我知道我们需要将输入格式更改为实现CombineFileInputFormat
,这可能涉及使用cascadings CombinedHfs
.我们无法弄清楚如何做到这一点,但它应该只是少数几行代码来定义我们自己的Scalding源,比如说CombineTextLine
.
非常感谢能够提供代码的任何人.
作为一个方面的问题,我们有一些数据,在S3中,如果解决方案给出了S3文件作品也将是巨大的-我想这取决于是否CombineFileInputFormat
或CombinedHfs
适用于S3.