2017-10-12 115 views
0

我通過火花試圖在mysql中設置row number每一行如何執行火花兩個查詢

SET @row_num = 0; 
SELECT @row_num := @row_num + 1 as row_number,t.* FROM table t 

它的正常工作在MySQL,但來自火花它拋出一個錯誤

val setrownum = "SET property_key[[email protected]_num = 0]" // "SET @row_num = 0" 
val rownum = "SELECT property_key := property_key + 1 as row_number,t.* FROM table t" 
val setrowexe = spark.sql(setrownum) 
val rownumexe = spark.sql(rownum) 

我也試過

val setrownum = "SET property_key[[email protected]_num = 0];SELECT property_key := property_key + 1 as row_number,t.* FROM table t" 
val setrowexe = spark.sql(setrownum) 
setrowexe.show() 

但沒有運氣。如何執行上述兩個查詢以設置錶行號?

SELECT property_key:=property_key+1 as rowid,d.* FROM destination d, (SELECT property_key[[email protected]:=0]) as init 

該查詢執行的MySQL,但不是通過火花

回答

0

上面的查詢執行MySQL,但不是通過火花

,它不會。 Spark SQL中沒有任何支持。行號可以使用具有窗口函數的標準SQL來獲得。

SELECT row_number over (...) FROM table 

外部數據庫的類型不相關。在源服務器上執行查詢的唯一方法是在數據框定義中使用子查詢,但不支持這樣的擴展。

+0

我有mysql作爲數據庫。 – Vignesh

+0

在單個查詢中實現行號和表數據的其他方法。 – Vignesh