RDD 分区问题
Posted
技术标签:
【中文标题】RDD 分区问题【英文标题】:RDD Partitions Issue 【发布时间】:2021-05-29 13:05:32 【问题描述】:使用以下代码读取 csv 文件
rdd= (sc.sparkContext
.textFile("./test123.txt")
.flatMap(lambda line: line.split("\n\r"))
.map(lambda x: x.split("|"))
)
在运行上面的代码时,spark 只创建了一个分区(在我的本地机器上),想了解这是为什么?下面显示1
rdd.getNumPartitions()
我想并行化这个操作,以便可以在集群上运行。对于要分发的工作,rdd 应该有一个以上的分区(这是我的理解),以便可以将任务发送到其他节点。这有什么亮点吗?
【问题讨论】:
文件中有多少个记录? 约400万 ***.com/questions/27299923/… 【参考方案1】:"textFile 方法还接受一个可选的第二个参数来控制文件的分区数。默认情况下,Spark 为文件的每个块创建一个分区(HDFS 中的块默认为 128MB),但您也可以通过传递更大的值来请求更多的分区。请注意,您的分区不能少于块。"
请尝试例如:
.textFile("./test123.txt", 2)
【讨论】:
以上是关于RDD 分区问题的主要内容,如果未能解决你的问题,请参考以下文章