通過Spark SQL讀寫SQL Server資料
AnalyticDB for MySQL支援提交Spark SQL作業,您可以通過View方式訪問自建SQL Server資料庫或ApsaraDB RDS for SQL Server資料庫。本文以ApsaraDB RDS for SQL Server為例,介紹如何通過Spark SQL訪問SQL Server資料。
前提條件
AnalyticDB for MySQL叢集的產品系列為企業版、基礎版或湖倉版。
已在AnalyticDB for MySQL叢集中建立Job型資源群組。
已建立AnalyticDB for MySQL叢集的資料庫帳號。
如果是通過阿里雲帳號訪問,只需建立高許可權帳號。
如果是通過RAM使用者訪問,需要建立高許可權帳號和普通帳號並且將RAM使用者綁定到普通帳號上。
-
AnalyticDB for MySQL叢集與RDS SQL Server執行個體所屬同一VPC。
-
已為RDS SQL Server執行個體添加安全性群組,且安全性群組規則的入方向與出方向允許存取RDS SQL Server連接埠的訪問請求。
-
已將RDS SQL Server執行個體所屬交換器的網段加入至RDS SQL Server白名單中。
步驟一:資料準備
在RDS SQL Server中建立資料庫和表,並插入資料。樣本語句如下:
CREATE DATABASE db;
CREATE TABLE test (
id INT NULL,
first_name NVARCHAR(32) NULL,
last_name NVARCHAR(32) NULL,
age INT NULL
);
INSERT INTO test VALUES(1,'a','b',5);
INSERT INTO test VALUES(2,'c','d',6);
INSERT INTO test VALUES(3,'e','f',7);
步驟二:下載並上傳RDS SQL Server驅動程式
-
解壓下載的驅動程式壓縮包,將jars檔案裡尾碼為jre8.jar的Jar包上傳至OSS。
步驟三:提交Spark SQL作業
登入雲原生資料倉儲AnalyticDB MySQL控制台,在左上方選擇叢集所在地區。在左側導覽列,單擊集群清單,然後單擊目的地組群ID。
-
在左側導覽列,單擊。
-
在SQL Console視窗,選擇Spark引擎和Job型資源群組。
-
在SQL Console視窗中按訪問方式輸入以下作業內容:
ADD jar oss://testBucketName/mssql-jdbc-12.8.1.jre8.jar; SET spark.adb.eni.enabled=true; SET spark.adb.eni.vswitchId=<vsw-bp1sxxsodv28ey5dl****>; SET spark.adb.eni.securityGroupId=<sg-bp19mr685pmg4ihc****>; CREATE TEMPORARY VIEW table_tmp USING org.apache.spark.sql.jdbc OPTIONS ( url '<jdbc:mysql://rm-t4nn744j34****.mssql.singapore.rds.aliyuncs.com:1433;databaseName=db;trustServerCertificate=true;encrypt=true;>', driver 'com.microsoft.sqlserver.jdbc.SQLServerDriver', dbtable '<tableName>', user '<user>', password '<password>' ); INSERT INTO table_tmp VALUES(4,'e','f',8); SELECT * FROM table_tmp;參數說明:
參數
是否必填
說明
add jar
是
RDS SQL Server驅動程式所在的OSS路徑。
本文樣本為mssql-jdbc-12.8.1.jre8.jar包所在的OSS路徑。
spark.adb.eni.enabled
是
開啟ENI訪問。
訪問資料時,需將
spark.adb.eni.enabled參數設定為true。spark.adb.eni.vswitchId
是
交換器ID。在RDS SQL Server執行個體的資料庫連接頁面,將滑鼠移動至VPC處,擷取交換器ID。
spark.adb.eni.securityGroupId
是
RDS SQL Server執行個體中添加的安全性群組ID。如未添加安全性群組,請參見設定安全性群組規則。
USING org.apache.spark.sql.jdbc
是
參數取值固定為
USING org.apache.spark.sql.jdbc。options
是
-
url:RDS SQL Server執行個體的內網地址和連接埠。格式為:
jdbc:sqlserver://rm-t4nn744j34****.mssql.singapore.rds.aliyuncs.com:1433;databaseName=db;trustServerCertificate=true;encrypt=true;。其中databaseName配置為具體訪問的資料庫名稱,trustServerCertificate和encrypt均配置為true。 -
driver:參數取值固定為
com.microsoft.sqlserver.jdbc.SQLServerDriver。 -
dbtable:RDS SQL Server的表名。格式為
db_name.table_name。本文以db.test為例。 -
user:RDS SQL Server資料庫的帳號。
-
password:RDS SQL Server資料庫帳號的密碼。
-
-
單擊執行SQL。
-
Spark作業執行成功後,您可以在Spark Jar 開發頁面應用列表頁簽中的日誌查看錶資料。詳情請參見Spark開發編輯器。