Pyspark分组地图熊猫UDF-是否保持组中行的顺序?

时间:2020-04-25 04:45:32

标签: python pyspark databricks

我正在使用pandas_udf在pyspark中创建分组地图(拆分应用组合模式)UDF,我需要知道在传递给UDF时行的顺序是否保持不变(我的转换取决于每个组的行)。

1 个答案:

答案 0 :(得分:0)

否!

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)