首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将saveAsTextFile()写入多个文件,而不是一个

将saveAsTextFile()写入多个文件,而不是一个
EN

Stack Overflow用户
提问于 2016-02-17 00:09:07
回答 1查看 18.1K关注 0票数 5

我现在正在笔记本电脑上使用Spark和Scala。

当我将RDD写入文件时,输出将被写入两个文件"part-00000“和"part-00001”。如何强制Spark / Scala向写入一个文件

我的代码是:

代码语言:javascript
运行
复制
myRDD.map(x => x._1 + "," + x._2).saveAsTextFile("/path/to/output")

我在哪里写移除括号键,值对。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-17 00:17:20

“问题”确实是一个特性,它是由RDD的分区方式产生的,因此它在n部件中分离,其中n是分区的数量。要解决这个问题,只需在您的再分割上使用RDD将分区的数量更改为一个。这些文件指出:

重分区(NumPartitions) 返回一个具有完全numPartitions分区的新RDD。 可以增加或减少此RDD中的并行级别。在内部,这会使用洗牌来重新分发数据。如果您正在减少此RDD中的分区数量,请考虑使用合并,这样可以避免执行洗牌。

例如,这个更改应该有效。

代码语言:javascript
运行
复制
myRDD.map(x => x._1 + "," + x._2).repartition(1).saveAsTextFile("/path/to/output")

正如文档所述,您也可以使用聚结,这实际上是在减少分区数量时推荐的选项。但是,将分区数量减少到一个分区被认为是个坏主意,因为它会导致数据被洗牌到一个节点,并失去并行性。

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

https://stackoverflow.com/questions/35445486

复制
相关文章

相似问题

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