') * ") так что я бы просто перечислил столбцы из dfA, которые существуют в dfB +" null as colname "для тех, которые не существуют в dfB.

я есть две искровые датафреймы:

Фрейм данных A:

|col_1 | col_2 | ... | col_n |
|val_1 | val_2 | ... | val_n |

и кадр данных B:

|col_1 | col_2 | ... | col_m |
|val_1 | val_2 | ... | val_m |

Фрейм данных B может содержать повторяющиеся, обновленные и новые строки из фрейма данных A. Я хочу написать в spark операцию, в которой я могу создать новый фрейм данных, содержащий строки из фрейма данных A и обновленные и новые строки из фрейма данных B.

Я начал с создания хеш-столбца, содержащего только те столбцы, которые нельзя обновить. Это уникальный идентификатор. Так скажемcol1 а такжеcol2 может изменить значение (может быть обновлено), ноcol3,..,coln уникальны. Я создал хэш-функцию какhash(col3,..,coln):

A=A.withColumn("hash", hash(*[col(colname) for colname in unique_cols_A]))
B=B.withColumn("hash", hash(*[col(colname) for colname in unique_cols_B]))

Теперь я хочу написать искровой код, который в основном выбирает строки из B, хэш которых не находится в A(поэтому новые строки и обновленные строки) и объединить их в новый фрейм данных вместе со строками из A. Как я могу добиться этого в pyspark?

Изменить: Dataframe B может иметь дополнительные столбцы из dataframe A, поэтому объединение невозможно.

Пример

Фрейм данных A:

+-----+-----+
|col_1|col_2|
+-----+-----+
|    a|  www|
|    b|  eee|
|    c|  rrr|
+-----+-----+

Рамка данных B:

+-----+-----+-----+
|col_1|col_2|col_3|
+-----+-----+-----+
|    a|  wew|    1|
|    d|  yyy|    2|
|    c|  rer|    3|
+-----+-----+-----+

Результат: Dataframe C:

+-----+-----+-----+
|col_1|col_2|col_3|
+-----+-----+-----+
|    a|  wew|    1|
|    b|  eee| null|
|    c|  rer|    3|
|    d|  yyy|    2|
+-----+-----+-----+

Ответы на вопрос(1)

Ваш ответ на вопрос