比较两个Spark数据帧

普拉卡什

Spark数据框1-:

+------+-------+---------+----+---+-------+
|city  |product|date     |sale|exp|wastage|
+------+-------+---------+----+---+-------+
|city 1|prod 1 |9/29/2017|358 |975|193    |
|city 1|prod 2 |8/25/2017|50  |687|201    |
|city 1|prod 3 |9/9/2017 |236 |431|169    |
|city 2|prod 1 |9/28/2017|358 |975|193    |
|city 2|prod 2 |8/24/2017|50  |687|201    |
|city 3|prod 3 |9/8/2017 |236 |431|169    |
+------+-------+---------+----+---+-------+

Spark数据框2-:

+------+-------+---------+----+---+-------+
|city  |product|date     |sale|exp|wastage|
+------+-------+---------+----+---+-------+
|city 1|prod 1 |9/29/2017|358 |975|193    |
|city 1|prod 2 |8/25/2017|50  |687|201    |
|city 1|prod 3 |9/9/2017 |230 |430|160    |
|city 1|prod 4 |9/27/2017|350 |90 |190    |
|city 2|prod 2 |8/24/2017|50  |687|201    |
|city 3|prod 3 |9/8/2017 |236 |431|169    |
|city 3|prod 4 |9/18/2017|230 |431|169    |
+------+-------+---------+----+---+-------+

请找出适用于上述给定火花数据框1和火花数据框2的以下条件的火花数据框。

  1. 删除记录
  2. 新纪录
  3. 记录无变化
  4. 更改记录

    这里的关键是“城市”,“产品”,“日期”。

我们需要不使用Spark SQL的解决方案。

我不确定要查找已删除和已修改的记录,但是可以使用except函数来获取差异

df2.except(df1)

这将返回已在dataframe2中添加或修改的行或具有更改的记录。输出:

+------+-------+---------+----+---+-------+
|  city|product|     date|sale|exp|wastage|
+------+-------+---------+----+---+-------+
|city 3| prod 4|9/18/2017| 230|431|    169|
|city 1| prod 4|9/27/2017| 350| 90|    190|
|city 1| prod 3|9/9/2017 | 230|430|    160|
+------+-------+---------+----+---+-------+

您也可以尝试使用join和filter来获取更改和未更改的数据,如下所示:

df1.join(df2, Seq("city","product", "date"), "left").show(false)
df1.join(df2, Seq("city","product", "date"), "right").show(false)

希望这可以帮助!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Spark 比较两个数据帧并找到匹配计数

比较Spark中的两个数据帧

比较两个带有pySpark的大型数据帧

逐行比较两个熊猫数据帧

Python:根据两个条件比较数据帧

使用R比较两个不同行的数据帧

比较两个熊猫数据帧的行的最快方法?

比较两个熊猫数据帧的行?

使用 Pandas 比较两个数据帧以返回一个新的数据帧 - Python

比较Spark中两个RDD中的数据

比较Spark中两个相同结构的数据框

Python - 比较两个数据帧

比较两个数据帧Pyspark

比较来自两个不同 pyspark 数据帧的两对列以显示不同的数据

如何比较pyspark中两个不同数据帧中的两列

比较两个熊猫数据帧中数据的布尔逻辑

比较数据帧中的两个datetime列并返回一个标志

熊猫-比较两个Csv数据帧,但一个csv出现问题

如何比较来自两个不同数据帧的两个句子的函数中的处理时间减少?

比较两个数据帧并保留另一个数据帧的特定日期时间范围

比较两个熊猫数据帧中的值以保持运行计数

根据多个行条件比较两个不同的数据帧

如何根据日期时间列比较两个长度不等的数据帧

比较两个熊猫数据帧上的所有列以获得差异

比较两个熊猫数据帧中的值,与顺序无关

如何比较两个连续字段在数据帧中是否相同?

通过列值比较两个熊猫数据帧的行

如何比较基于列的两个不同大小的数据帧?

来自两个不同数据帧的列之间的成对比较