PySpark перераспределение по определенной колонке - PullRequest
0 голосов
/ 22 мая 2018

Я смотрю, как перераспределить (в PySpark) набор данных, чтобы все строки с одинаковым идентификатором в указанном столбце перемещались в один и тот же раздел.Фактически мне нужно запустить в каждом разделе программу, которая вычисляет одно значение для всех строк с одинаковым идентификатором.

У меня есть фрейм данных (df), построенный из запроса HIVL QL (с допустим, например, содержит 10000отличные идентификаторы).Я попытался:

df = df.repartition("My_Column_Name")

По умолчанию я получаю 200 разделов, но всегда получаю 199 идентификаторов, для которых я получаю дублированные вычисленные значения при запуске программы.

Я посмотрел в Интернете,и некоторые люди рекомендовали определить пользовательский разделитель для использования с методом repartition, но я не смог найти, как это сделать в Python.

Есть ли способ сделать это перераспределение правильно?

1 Ответ

0 голосов
/ 07 июня 2018

Я хочу, чтобы ВСЕ строки с одинаковыми идентификаторами перемещались в один и тот же раздел.Нет проблем, если раздел содержит несколько групп строк с разными идентификаторами.1000 был просто примером, количество разных идентификаторов может быть очень большим.Таким образом, разбиение DF на количество разделов с разными идентификаторами не должно приводить к хорошей производительности.Мне это нужно, потому что я запускаю функцию (которую нельзя реализовать с помощью базовых функций преобразования Spark), используя метод RDD mapPartition.Эта функция выдает один результат для каждого отдельного идентификатора, поэтому мне нужно, чтобы все строки с одинаковым идентификатором находились в одном разделе.

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