RDD关于分区的基础知识

时间:2016-08-19 18:28:09

标签: python apache-spark distributed-computing partitioning 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()将在每个分区上运行并返回本地结果(然后应该减少),但如果是这种情况,我希望lineLenghts是一个数字列表,长度等于到#partitions,情况并非如此。

我错过了什么?

1 个答案:

答案 0 :(得分:2)

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