2016-12-06 6 views
0

Теперь мне нужно дифф две таблицы с помощью искрового SQL, я нашел ответ SQL-сервера, как это:Как разбить два стола, используя искру sql?

(SELECT * 
FROM table1 
EXCEPT 
SELECT * 
FROM table2) 
UNION ALL 
(SELECT * 
FROM table2 
EXCEPT 
SELECT * 
FROM table1) 

Надежда кто-нибудь может сказать мне, как с помощью искры SQL, как это в SQL Server? (Не заботьтесь специальный седловины, просто используйте *)

ответ

2

Вы можете сделать это что-то вроде этого:

scala> val df1=sc.parallelize(Seq((1,2),(3,4))).toDF("a","b") 
df1: org.apache.spark.sql.DataFrame = [a: int, b: int] 

scala> val df2=sc.parallelize(Seq((1,2),(5,6))).toDF("a","b") 
df2: org.apache.spark.sql.DataFrame = [a: int, b: int] 

scala> df1.create 
createOrReplaceTempView createTempView 

scala> df1.createTempView("table1") 

scala> df2.createTempView("table2") 

scala> spark.sql("select * from table1 EXCEPT select * from table2").show 
+---+---+                  
| a| b| 
+---+---+ 
| 3| 4| 
+---+---+ 


scala> spark.sql("(select * from table2 EXCEPT select * from table1) UNION ALL (select * from table1 EXCEPT select * from table2)").show 
+---+---+                  
| a| b| 
+---+---+ 
| 5| 6| 
| 3| 4| 
+---+---+ 

Примечание: В вашем случае вы должны сделать dataframe из JDBC вызывает, а затем зарегистрировать таблицу и выполнить операции.

 Смежные вопросы

  • Нет связанных вопросов^_^