【发布时间】:2018-03-03 23:54:20
【问题描述】:
我必须使用 pyspark 比较两个数据帧以找出基于一个或多个关键字段的列差异,这是一种性能效率最高的方法,因为我必须处理巨大的数据帧
我已经构建了一个解决方案,用于使用哈希匹配比较两个数据帧,而无需像 data_compare.df_subtract(self.df_db1_hash,self.df_db2_hash) 这样的关键字段匹配
但是如果我想使用关键字段匹配,情况就不同了
注意:我提供了示例预期数据框。实际要求是任何列中与 DataFrame 2 的任何差异都应在输出/预期数据框中检索。
DataFrame 1:
+------+---------+--------+----------+-------+--------+
|emp_id| emp_city|emp_name| emp_phone|emp_sal|emp_site|
+------+---------+--------+----------+-------+--------+
| 3| Chennai| rahman|9848022330| 45000|SanRamon|
| 1|Hyderabad| ram|9848022338| 50000| SF|
| 2|Hyderabad| robin|9848022339| 40000| LA|
| 4| sanjose| romin|9848022331| 45123|SanRamon|
+------+---------+--------+----------+-------+--------+
DataFrame 2:
+------+---------+--------+----------+-------+--------+
|emp_id| emp_city|emp_name| emp_phone|emp_sal|emp_site|
+------+---------+--------+----------+-------+--------+
| 3| Chennai| rahman|9848022330| 45000|SanRamon|
| 1|Hyderabad| ram|9848022338| 50000| SF|
| 2|Hyderabad| robin|9848022339| 40000| LA|
| 4| sandiego| romino|9848022331| 45123|SanRamon|
+------+---------+--------+----------+-------+--------+
Expected dataframe after comparing dataframe 1 and 2
+------+---------+--------+----------+
|emp_id| emp_city|emp_name| emp_phone|
+------+---------+--------+----------+
| 4| sandiego| romino|9848022331|
+------+---------+--------+----------+
【问题讨论】:
-
如果
emp_id与 1 的emp_city列不匹配,除了问题中的不匹配。输出数据框是什么? -
感谢您强调这种情况,我已经编辑了我的帖子以提供更清晰的信息。回答您的问题,输出数据帧中甚至需要 emp_city。
-
你没有理解我的问题,是吗?我要问的是,如果 emp_id 1 的两个数据帧的 emp_city 也不同怎么办?预期的数据框会是什么样子?
| 4| ???? | romino||9555552331|的emp_city 是什么?? -
我再次更新了我的原始帖子(预期的数据框)。在基于一个或多个关键字段比较数据帧 1 和 2 之后,我喜欢在输出数据帧中获得与数据帧 2 的差异。我希望现在回答你的问题。谢谢
-
如果您有任何方法可以继续此方案,请告诉我。
标签: python-3.x apache-spark pyspark comparison spark-dataframe