Сравнить Spark Dataframes, где они не равны списку столбцов сравнения - PullRequest
0 голосов
/ 29 апреля 2019

В настоящее время я пытаюсь сравнить два фрейма данных вместе, чтобы увидеть, как поля не совпадают в pyspark. Мне удалось написать это вручную, но я хочу иметь возможность передать список полей, чтобы убедиться, что кадры не совпадают на полях. Фреймы данных идентичны.

Код, который я имею до сих пор:

key_cols = ['team_link_uuid', 'team_sat_hash']
temp_team_sat = orig.select(*key_cols)
temp_team_sat_incremental = delta.select(*key_cols)
hash_field = ['team_sat_hash']

test_update_list = temp_team_sat.join(temp_team_sat_incremental, (temp_team_sat.team_link_uuid == temp_team_sat_incremental.team_link_uuid) & (temp_team_sat.team_sat_hash != temp_team_sat_incremental.team_sat_hash))

Но теперь мне нужно иметь возможность взять мой список (hash_field) и убедиться, что одно или несколько полей не равны друг другу.

1 Ответ

1 голос
/ 29 апреля 2019

при условии fields_to_compare_list - список полей, которые вы хотите сравнить,

from functools import reduce

comparaison_query = reduce(
    lambda a,b : (a | b),
    [ temp_team_sat[col] != temp_team_sat_incremental[col] 
      for col 
      in fields_to_compare_list
    ]
)

test_update_list = temp_team_sat.join(
    temp_team_sat_incremental, 
    on = (temp_team_sat.team_link_uuid == temp_team_sat_incremental.team_link_uuid) \
         & comparaison_query
...