怎么使用Spark Java比较两个Spark数据帧的Spark SQL查询
来源:爱站网时间:2021-12-02编辑:网友分享
我有两个数据框。我正在从Kafka读取的输入数据框,以及我正在从DB2数据库读取的另一个数据框。但是最近有人来爱站技术小编:怎么使用Spark Java比较两个Spark数据帧的Spark SQL查询,面对这个问题,一篇文章就能解决,现在发出来给大家参考参考。
问题描述
我有两个数据框。我正在从Kafka读取的输入数据框,以及我正在从DB2数据库读取的另一个数据框。
注意:我正在使用Spark Java进行编码。
要求为:
例如
INPUT_DF
ID NAME CITY DATE
----------------------------------
111 aaa ATLANTIC 20200201
222 bbb PACIFIC 20200202
333 bbb INDIAN 20200201
444 NNN CORAL 20200205
555 bbb INDIAN 20200206
666 aaa ATLANTIC 20200201
BASE_DATAFRAME from DB2 TABLE
ID NAME CITY DATE
----------------------------------
222 CCC PACIFIC 20200201
333 bbb ATLANTIC 20200203
444 NNN CORAL 20200206
555 bbb INDIAN 20200202
结果1:
ID NAME CITY DATE
----------------------------------
111 aaa ATLANTIC 20200201
666 aaa ATLANTIC 20200201
结果2:
ID NAME CITY DATE
----------------------------------
222 bbb PACIFIC 20200202
请帮助我进行查询以获得结果。
谢谢
思路:
找到解决方案..在下面的查询中使用以同时获得两个结果。
Result 1:
spark.sql("SELECT f.* FROM INPUT_DF f LEFT JOIN BASE_DATAFRAME s ON f.ID=s.ID WHERE s.ID is NULL");
Result 2:
spark.sql("SELECT f.* FROM INPUT_DF f JOIN BASE_DATAFRAME s ON f.ID=s.ID WHERE f.DATE>s.DATE and (f.names.name OR f.citys.city)");
以上内容就是爱站技术频道小编为大家分享的怎么使用Spark Java比较两个Spark数据帧的Spark SQL查询,看完以上分享之后,大家应该都知道怎么操作了吧。
上一篇:怎么将列表放入地图中
下一篇:如何从jar文件动态加载类