【问题标题】:Compare 2 spark dataframes in Java using new column to print the result使用新列比较 Java 中的 2 个 spark 数据帧以打印结果
【发布时间】:2021-10-02 16:43:20
【问题描述】:
我正在使用 Apache Spark,我正在尝试使用 JAVA 比较两个 json 文件。我有两个数据框 1) 预期数据和 2) 实际数据。
预期数据 - table_1
实际数据 - table_2
区别
我需要它来比较每一列以 精确 并获取 预期数据帧 并包含另一个名为 'result' 的列,它给出通过或失败。 例如差异是 emp_id 4。因此,该列将如下所示;通过,通过,通过,失败。
谁能帮帮我
【问题讨论】:
标签:
json
dataframe
apache-spark
apache-spark-sql
【解决方案1】:
假设两个数据框具有完全相同的列名称,您可以通过将这两个数据框的所有列连接起来来比较它们。
val allColumns = dataframe1.columns.toSeq
val diffDf = dataframe1.join(dataframe2, allColumns)
默认连接类型是内连接,因此您会在 diffDf 中收到这两个数据帧之间的所有公共行。
如果您想在 diffDf 中接收两个数据帧之间的所有不同行,只需使用完整的外部类型,如下所示:
val diffDf = dataframe1.join(dataframe2, allColumns, "fullouter")
您可以使用连接类型来获得所需的 diffDf。