我在读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
是一个数字列表,长度等于到#分区,而事实并非如此。你知道吗
我错过了什么?你知道吗
len(lineLengths.collect())
或lineLengths.count()
告诉您rdd中的行数。lineLengths.getNumPartitions()
,正如您所指出的,是rdd分布在的分区数。rdd的每个分区都包含数据帧的许多行。你知道吗相关问题 更多 >
编程相关推荐