关于分区的 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 的每个分区都包含数据帧的许多行。
我正在阅读 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 的每个分区都包含数据帧的许多行。