AnalyticDB for MySQL企業版及湖倉版支援使用批處理和互動式兩種方法執行Spark SQL,兩種執行方式都直接與AnalyticDB for MySQL的中繼資料服務連通,可以讀寫AnalyticDB for MySQL的庫表。本文介紹批處理和互動式兩種執行方式的注意事項、適用情境、特點及啟動方法。
批處理
注意事項
使用批處理方式執行SQL時,必須在SQL執行開始處使用
USE <database_name>;
文法選擇一個資料庫。SQL語句中指定表時,必須為
database_name.table_name
格式。批處理方式執行DML、DDL或DQL等任何SQL語句時,只有返回執行成功或者失敗,不返回資料。執行成功的結果會抽樣一部分列印到日誌中。如需查看SQL語句返回的資料,詳情請參見查看Spark應用資訊。
適用情境
執行多條相互依賴的SQL語句。
SQL語句需要嚴格的資源隔離。
需要處理較大規模的資料,例如使用SQL執行一次性的ETL。
有複雜的第三方依賴包需要上傳,且這些包可能需要反覆測試和替換。
特點
批處理方式提交的SQL運行在單獨的Spark應用中,可以保證穩定性。
支援通過SQL語句描述獨立的配置,如
SET spark.sql.adaptive.coalescePartitions.minPartitionSize = 2MB;
。批處理方式執行的SQL中如果包含SELECT語句,這些SELECT語句的執行結果會抽樣一部分列印到日誌中,您可以在日誌中查看。
啟動方法
在SQLConsole視窗,選擇Job型資源群組和Spark引擎。執行SQL語句時,在彈窗中選擇繼續執行。
互動式執行
注意事項
互動式執行的DDL和DML語句的執行結果僅返回最多1000行資料。
使用互動執行方式執行的DDL語句,只返回執行成功或者失敗,不返回資料。例如執行
CREATE TABLE
語句,只提示成功或失敗,不返回表中的資料,和開源社區保持一致。當有英文分號(;)隔開的多個SQL語句時,Spark引擎只會執行最後一行SQL。
ThriftServer引擎啟動需要一定時間,如果出現啟動時失敗可以等待一定時間重試。
適用情境
臨時進行資料計算,無需返回所有資料。
需要執行大量的DDL語句。
希望在提交DQL語句後,可以立即開始執行, 且對資源隔離不敏感,能允許一定的失敗。
特點
同一個資源群組中的SQL由共用的ThriftServer引擎執行,並返回1000條結果到控制台。
資源隔離是線程級的。多個使用者在同一個Spark應用中執行SQL,相互之間可能存在幹擾。
線程級的配置可以通過配置SQL生效。
應用層級的配置,需要重啟ThriftServer引擎才會生效。如需修改應用層級的配置,需要先停止ThriftServer,參數配置完成後重新啟動ThriftServer引擎。啟動和停止ThriftServer的操作,請參見啟停ThriftServer。
啟動方式
使用Job型資源群組互動式執行SQL時,需要啟動ThriftServer,您可以通過以下兩種方式啟動ThriftServer。
在SQLConsole視窗,選擇Job型資源群組和Spark引擎。執行SQL語句時,在彈窗中選擇啟動ThriftServer。
在資源群組列表中,單擊目標Job型資源群組操作列的進階配置,完成參數配置後,單擊啟動。詳情請參見啟動ThriftServer。
已啟動ThriftServer的Job型資源群組,在執行SQL時,都會採用互動式執行。