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 分区问题的主要内容,如果未能解决你的问题,请参考以下文章

PySpark 重新分区 RDD 元素

Spark 分区:创建 RDD 分区但不创建 Hive 分区

Spark基础学习笔记18:掌握RDD分区

Spark:查找 RDD 的每个分区大小

RDD的分区依赖关系机制

Spark 多维 RDD 分区