我有一个df,它已经在所有列上进行了分区和排序。现在我只想删除每个分区中的重复项重复项不会跨越多个分区)。我不能用 df.distinct()
,因为它会导致随机播放,我想避免随机播放。我将df转换成rdd并使用 mapPartitions
. 我得到的输出,但它运行非常慢。如何对此进行优化?下面是我的代码。
def unique_values(iterable):
it = iter(iterable)
previous = next(it)
yield previous
for item in it:
if item != previous:
previous = item
yield item
rdd = df.rdd.mapPartitions(unique_values)
df = ..converting rdd back to df...
spark版本:emr 5.28上的2.4.4
1条答案
按热度按时间4ioopgfo1#
假设Dataframe
df
已经在所有列上进行了分区和排序。为每行分配分区id
根据分区ID和所有的\u列进行分组,以在每个分区中获得不同的结果