在PySpark中实现快速选择算法

时间:2018-11-15 13:08:58

标签: pyspark

我必须使用Spark 2.2找到大量数字的确切中位数。由于这是一项练习,因此不允许对整个rdd进行排序或使用approxQuantilePercentile_rank之类的函数。

我的实现是具有随机分区的递归Quickselect算法,以实现合理的复杂性。我认为Map / Reduce方法将对此有好处,但我愚蠢到不了解a)如何正确地将自己的函数(带有多个参数)作为mapping函数传递,以及b)如何传递整个数据集作为参数有效。

我从文档或Internet上找到的所有示例都非常简单:与RDD逐一遍历DFlambda值并将其汇总,而不是将rdd作为数组处理。与映射函数相同:单参数函数只是rdd.map(fun),但是如果我需要将fun(arr, p1, p2, p3)作为映射函数,而实际的rdd作为arr传递呢?

0 个答案:

没有答案