Spark SQL Запрос на сравнение двух Spark Dataframes с использованием Spark Java - PullRequest
0 голосов
/ 23 февраля 2020

У меня есть два кадра данных. Входной фрейм данных, который я читаю из Kafka, и другой, который я читаю из базы данных DB2.

ПРИМЕЧАНИЕ. Я использую Spark Java для кодирования.

Требование:

Например

INPUT_DF

ID  NAME    CITY        DATE
----------------------------------  <In comparison to BASE_DATAFRAME>
111 aaa     ATLANTIC    20200201    <New ID>
222 bbb     PACIFIC     20200202    <ID Exist, Later DATE, NAME different>
333 bbb     INDIAN      20200201    <ID Exist, Earlier DATE>
444 NNN     CORAL       20200205    <ID Exist, Earlier DATE, ALL OTHER COLUMNS SAME VALUE>
555 bbb     INDIAN      20200206    <ID Exist, Later DATE, ALL OTHER COLUMNS SAME VALUE>
666 aaa     ATLANTIC    20200201    <New ID>
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

Пожалуйста, помогите мне с запросами, чтобы получить результаты .

Спасибо

1 Ответ

0 голосов
/ 24 февраля 2020

Найдено решение. Используется ниже запросов, чтобы получить оба результата.

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.name<>s.name OR f.city<>s.city)");
...