如何比较spark scala中的两个数据帧?
how to compare two data frames in spark scala?
我有两个数据帧,每个数据帧都有最大时间戳值。
val Table1max=spark.read.format("parquet").option("header","true").load(s"${SourcePath}/ab12")
Table1max.createOrReplaceTempView("temp")
val table2max=spark.read.format("parquet").option("header","true").load(s"${SourcePath}/abc")
table2max.createOrReplaceTempView("temp1")
Then select max update date from both
val table1maxvalue = spark.sql(s"select max(UPDATE_DATE) from temp")
val table2maxvalue= spark.sql(s"select max(UPDATE_DATE) from temp1")
Here table1maxvalue and table2maxvalue are dataframes.
table1maxvalue
+--------------------+
| max(UPDATE_DATE)|
+--------------------+
|2022-05-02 01:04:...|
+--------------------+
table2maxvalue
+--------------------+
| max(UPDATE_DATE)|
+--------------------+
|2022-05-02 01:04:...|
+--------------------+
现在我如何检查 table1maxvalue > table2maxvalue 它应该是什么。
喜欢
if(table1maxvalue<table2maxvalue){
Do something
}
由于它是数据框,我收到此错误:值 >= 不是 org.apache.spark.sql.DataFrame
的成员
请推荐。
您正在尝试将一个数据帧与另一个数据帧进行比较。
您实际上需要引用第一行,然后从该行中检索值。
在这种情况下,您可以使用以下方法:
table1maxvalue //Data frame
.head() //get the first row
.getDate(0) //get the first column as a date.
我有两个数据帧,每个数据帧都有最大时间戳值。
val Table1max=spark.read.format("parquet").option("header","true").load(s"${SourcePath}/ab12")
Table1max.createOrReplaceTempView("temp")
val table2max=spark.read.format("parquet").option("header","true").load(s"${SourcePath}/abc")
table2max.createOrReplaceTempView("temp1")
Then select max update date from both
val table1maxvalue = spark.sql(s"select max(UPDATE_DATE) from temp")
val table2maxvalue= spark.sql(s"select max(UPDATE_DATE) from temp1")
Here table1maxvalue and table2maxvalue are dataframes.
table1maxvalue
+--------------------+
| max(UPDATE_DATE)|
+--------------------+
|2022-05-02 01:04:...|
+--------------------+
table2maxvalue
+--------------------+
| max(UPDATE_DATE)|
+--------------------+
|2022-05-02 01:04:...|
+--------------------+
现在我如何检查 table1maxvalue > table2maxvalue 它应该是什么。 喜欢
if(table1maxvalue<table2maxvalue){
Do something
}
由于它是数据框,我收到此错误:值 >= 不是 org.apache.spark.sql.DataFrame
的成员请推荐。
您正在尝试将一个数据帧与另一个数据帧进行比较。 您实际上需要引用第一行,然后从该行中检索值。
在这种情况下,您可以使用以下方法:
table1maxvalue //Data frame
.head() //get the first row
.getDate(0) //get the first column as a date.