【发布时间】:2021-11-24 04:09:06
【问题描述】:
我正在使用 spark 和 java 来尝试比较两个数据帧。
将 csv 文件转换为数据帧后,我想准确突出显示两个数据帧之间的变化。
它们都有相同的列。
如您所见,以下数据帧唯一不正确的是第二个 df2 中的 emp_id 4。
Dataset<Row> df1 = spark.read().csv("/Users/dataframeOne.csv");
Dataset<Row> df1 = spark.read().csv("/Users/dataframeTwo.csv");
df1.unionAll(df2).except(df1.intersect(df2)).show(true);
Df1
+------+---------+--------+----------+-------+--------+
|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|
+------+---------+--------+----------+-------+--------+
Df2
+------+---------+--------+----------+-------+--------+
|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| romino|9848022331| 45123|SanRamon|
+------+---------+--------+----------+-------+--------+
区别
+------+--------+--------+----------+-------+--------+
|emp_id|emp_city|emp_name| emp_phone|emp_sal|emp_site|
+------+--------+--------+----------+-------+--------+
| 4| sanjose| romino|9848022331| 45123|SanRamon|
+------+--------+--------+----------+-------+--------+
如何以黄色突出显示“Romino”,使用 JAVA 和 SPARK 的字段不正确?
【问题讨论】:
-
您能否将示例数据添加为文本(而不是屏幕截图)。这样可以更轻松地重现您的问题。
-
我认为你很接近。
df1.except(df2)为您提供 df1 中的行,但不在 df2 中。因此,要了解两者之间的区别,请同时运行df1.except(df2)和df2.except(df1)。 -
@m_vemuri 它打印出差异,但有没有办法突出差异,例如以黄色突出显示的“罗米诺”
-
@werner 希望它现在更容易阅读?
-
@JoeyOC 因为这都是程序化处理,所以突出显示不能轻易完成。它将需要某种用户界面/可能是 BI 工具。
标签: java dataframe apache-spark apache-spark-sql