Pyspark Grouped Map Pandas UDF - Сохраняет ли он порядок строк в группе? - PullRequest
1 голос
/ 25 апреля 2020

Я использую pandas_udf для создания UDF сгруппированной карты (шаблон split-apply-Объединить) в pyspark, и мне нужно знать, сохраняется ли порядок строк при передаче в UDF (мое преобразование зависит от порядка строки для каждой группы).

1 Ответ

0 голосов
/ 27 апреля 2020

Нет!

Pyspark groupby вызывает случайное перемешивание, и это случайное перемешивание не гарантирует для сохранения любого ранее существующего порядка. Чтобы обработать данные в порядке на сгруппированной карте, отсортируйте набор данных в верхней части UDF.

@pandas_udf(my_schema, PandasUDFType.GROUPED_MAP)
def my_udf(key_group):
    # Key group is not guaranteed to be ordered by key2 at this point!!
    key_group = key_group.sort_values("key2")
    # Now it's ordered by key2 and I can do my processing
    ...
    return my_processed_data

df.orderBy("key1", "key2").groupBy("key1").apply(my_udf)
...