表A有大约150M行,而表B大约有60行。在表A中,column_1
可以且经常包含大量NULLS。这会导致数据严重偏斜,并且一个执行程序在LEFT JOINING之后最终完成所有工作。
我已经阅读了几个关于解决方案的帖子但是我无法绕过跨越几个不同版本的Spark的不同方法。
我需要对表A采取什么操作?我需要对表B采取什么操作来消除由于LEFT JOIN而发生的偏斜分区?
我正在使用Spark 2.3.0并使用Python编写。在下面的代码片段中,我试图派生一个没有NULL的新列(用于执行连接),但我不知道该把它带到哪里(我不知道该怎么做)表B)
new_column1 = when(col('column_1').isNull(), rand()).otherwise(col('column_1'))
df1 = df1.withColumn('no_nulls_here', new_column1)
df1.persist().count()