我有两个Dataframe进行比较,并使用除了显示在第一个数据集中的数据和在第二个数据集中丢失的数据。它的工作很好,我想只显示不同的值,而不是整个行,以便有人很容易识别有差异的字段。
下面是代码片段
val spark: SparkSession = SparkSession.builder().master("local[*]").appName("Test6").getOrCreate();
val schemaOrig = List( StructField("key",StringType,true)
,StructField("name",StringType,true)
,StructField("start_ts",TimestampType,true)
,StructField("txn_dt",StringType,true))
val df = spark.createDataFrame(spark.sparkContext.parallelize(Seq(Row("1","john",java.sql.Timestamp.valueOf("2018-10-16 00:00:00"),"2020-02-14")))
,StructType(schemaOrig))
val df2 = spark.createDataFrame(spark.sparkContext.parallelize(Seq(Row("1","andrew",java.sql.Timestamp.valueOf("2017-10-16 00:00:00"),"2020-02-14")))
,StructType(schemaOrig))
df.except(df2).show(true)
+---+----+-------------------+----------+
|key|name| start_ts| txn_dt|
+---+----+-------------------+----------+
| 1|john| 2018-10-16 00:00:00 2020-02-14 |
+---+----+-------------------+----------+
预期产量
+---+-------------+--------------------+
|key|diff columns | diff values
+---+----------------------------------+
1 name,txn_dt john,2018-10-16 00:00:00
1条答案
按热度按时间3npbholx1#
使用
full outer join
&正在提取不匹配的列。请检查下面的代码。