比较不相等的Spark数据帧与比较列的列表

时间:2019-04-29 13:34:31

标签: apache-spark join pyspark

我目前正试图将两个数据帧进行比较,以查看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 个答案:

答案 0 :(得分:1)

假设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