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