Невозможно выполнить объединение после перераспределения фрейма данных pyspark

#python #amazon-web-services #apache-spark #pyspark

#python #amazon-веб-сервисы #apache-spark #pyspark

Вопрос:

Мы объединяем два огромных файла.

Итак, мы пытаемся перераспределить ключевой столбец, а затем пытаемся присоединиться к ключевому столбцу.

Фрагмент кода

 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'
 

Когда это работает :

Теперь, если я не переделываю и продолжаю объединение, оно работает нормально.

Но с точки зрения производительности мы хотели бы присоединиться после перераспределения

Не могли бы вы сообщить мне, как мне поступить.

Комментарии:

1. вы пропустили возврат, просто верните df в вашей функции

Ответ №1:

Просто добавьте 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')