PYSPARKDEWLIPARICANION接近 我正在尝试删除一些大型偏斜数据,UID,时间戳和另一组session_ids。第二组ID稍低。我试图在这3个公司中涂上火花DF ...

问题描述 投票:0回答:1

根据

partition by< 3 columns here>中指定的sphark分区数据,如果数据偏斜,则某些分区非常大,并且不适合内存。

解决方案是应用两个阶段row_number重复数据删除: 首先使用带有一些随机值的播种分区 第二步-Row_number无随机种子。

示例:

pyspark duplicates row-number skew
1个回答
0
投票
row_number()

Solution:
add
df1= spark.sql('select * from ( select t.*, row_number() over(partition by col1, col2 order by col3) rn from mytable t) s where rn=1')

对分区的添加,它将产生随机数和除以20个零件 然后进行重复数据删除

FLOOR(RAND()*100)%20

在没有随机数

的情况下再次重复进行删除

df1= spark.sql('select col1, col2, coln from ( select t.*, row_number() over(partition by col1, col2, FLOOR(RAND()*100)%20 order by col3) rn from mytable t) s where rn=1')

这将快速工作

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.