Реализация алгоритма быстрого выбора в PySpark - PullRequest
0 голосов
/ 15 ноября 2018

Я должен найти точную медиану огромного набора чисел, используя Spark 2.2. Поскольку это упражнение, сортировка всего rdd или использование таких функций, как approxQuantile или Percentile_rank, не допускаются.

Моя реализация представляет собой рекурсивный алгоритм Quickselect с рандомизированными разбиениями для достижения разумной сложности. Я предполагаю, что подход Map / Reduce был бы хорош для этого, но я просто достаточно глуп, чтобы не понимать a) как правильно передать мою собственную функцию (с несколькими параметрами) как функцию mapping и b) как передать всю набор данных эффективно в качестве параметра.

Все примеры, которые я нашел из документации или из Интернета, довольно просты: проходить последовательно значения RDD или DF по одному с lambda и суммировать их вместо обработки rdd как массив. То же самое с функцией отображения: функция с одним параметром была бы просто rdd.map(fun), но что, если мне нужно передать fun(arr, p1, p2, p3) как функцию отображения, с фактическим rdd как arr?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...