2016-03-07 49 views
1

當使用Spark SQL對WSO2 DAS執行批量分析時,試圖執行以下查詢。表'First','Middle'和'Third'需要合併並寫入'All_three'表中。執行此查詢時,對WSO2 DAS顯示WSO2 DAS:使用UNION生成錯誤的SPARK SQL查詢

INSERT OVERWRITE TABLE All_three 
SELECT SYMBOL, VOLUME FROM First 
UNION 
SELECT SYMBOL, VOLUME FROM Middle 
UNION 
SELECT SYMBOL, VOLUME FROM Third; 

以下錯誤:

ERROR: [1.79] failure: ``limit'' expected but `union' found INSERT OVERWRITE TABLE X1234_All_three SELECT SYMBOL, VOLUME FROM X1234_First UNION SELECT SYMBOL, VOLUME FROM X1234_Middle UNION SELECT SYMBOL, VOLUME FROM X1234_Third^

與UNION使用限制是不是必須的,以我的知識。將括號內的SELECT查詢也嘗試過了,但沒有奏效。我在這裏做錯了什麼?先謝謝你!

回答

1

我有同樣的問題。

請確保您在每行末尾都有空格。

原因是它不會將\ n視爲像SSMS或其他查詢編輯器這樣的空白字符。

因此它讀取沒有空白的查詢。 因此,它看起來像SELECT * FROM FirstUNION不像SELECT * FROM First UNION

我的問題已解決,我希望這對你也有幫助。

+0

是的,我發現這是困難的方式試圖獲得結果只應用新的行字符。然而,實際的問題被認爲是沒有括號和臨時數據元素,可以像@Isuru Wijesinghe提到的那樣解決。 –

+0

好的。這很好:-) –

0

這裏提到的查詢存在問題。請如下更改查詢。

INSERT OVERWRITE TABLE All_three SELECT * FROM(SELECT SYMBOL,體積爲第一 UNION SELECT SYMBOL,VOLUME從中 UNION SELECT SYMBOL,體積爲第三 )溫度;

其實我們就是在這裏做,包裹工會結果爲臨時數據元素稱爲臨時,並從那裏選擇的一切。 Spark-SQL解析器僅在插入查詢中使用單個select元素,並且在選擇查詢結束時它期望有一個限制(如果可用)。因此,您需要將隨後的select語句包裝到一個select元素中。希望這能解決你的問題。

+0

是的,這被認爲是我的查詢問題。謝謝您的幫助! –