重新划分pysparkDataframe后无法执行join

gzszwxb4  于 2021-05-16  发布在  Spark
关注(0)|答案(1)|浏览(452)

我们正在合并两个大文件。
所以我们尝试在键列上重新分区,然后尝试在键列上联接。
代码段

def repartition_df(df,primary_key,partition_value):
    df = df.repartition(partition_value,primary_key)

df_1 = repartition_df(df1,'pk1', 4 )
df_2 = repartition_df(df2,'pk1', 4 )

df3 = df_1.join(df_2,on =  ['pk1'] , how = 'left')

错误消息

An error was encountered:
'NoneType' object has no attribute 'join'
Traceback (most recent call last):
AttributeError: 'NoneType' object has no attribute 'join'

工作时:
现在,如果我不重新分区并继续加入,它工作得很好。
但从性能的Angular 来看,我们希望在重新分区后加入
你能告诉我,我该怎么办吗。

mutmk8jj

mutmk8jj1#

只需添加一个 return 声明和您的解决方案会很好地工作。

def repartition_df(df, primary_key, partition_value):
    df = df.repartition(partition_value, primary_key)
    return df

df_1 = repartition_df(df1, 'pk1', 4)
df_2 = repartition_df(df2, 'pk1', 4)

df3 = df_1.join(df_2, on=['pk1'], how='left')

相关问题