关于分区的 RDD 基础知识

RDD basics about partitions

我正在阅读 Spark: RDD operations 我正在执行:

In [7]: lines = sc.textFile("data")

In [8]: lines.getNumPartitions()
Out[8]: 1000

In [9]: lineLengths = lines.map(lambda s: len(s))

In [10]: lineLengths.getNumPartitions()
Out[10]: 1000

In [11]: len(lineLengths.collect())
Out[11]: 508524

但我希望我的数据集被分成几部分,有多少?作为分区数,即1000.

然后 map() 将在每个分区上 运行 并且 return 一个 local 结果(然后应该减少),但是如果这是我希望 lineLenghts 这是一个数字列表的情况,它的长度 等于 到 #partitions,但事实并非如此。

我错过了什么?

len(lineLengths.collect())lineLengths.count() 告诉您 rdd 中的行数。 lineLengths.getNumPartitions(),如您所述,是您的 rdd 分布的分区数。 rdd 的每个分区都包含数据帧的许多行。