我有一个包含大量数字(文件行的长度)的RDD,我想知道如何在数据的单次传递中获得最小/最大值。
我知道关于min和max函数,但这需要两次传递。

最佳答案

试试这个:

>>> from pyspark.statcounter import StatCounter
>>>
>>> rdd = sc.parallelize([9, -1, 0, 99, 0, -10])
>>> stats = rdd.aggregate(StatCounter(), StatCounter.merge, StatCounter.mergeStats)
>>> stats.minValue, stats.maxValue
(-10.0, 99.0)

10-06 00:05