AnalyticDB for MySQL支援提交Spark SQL作業,您可以通過View方式訪問自建PostgreSQL資料庫或ApsaraDB RDS for PostgreSQL資料庫。本文以RDS for PostgreSQL為例,介紹如何通過Spark SQL讀寫RDS for PostgreSQL資料。
前提條件
AnalyticDB for MySQL叢集的產品系列為企業版、基礎版或湖倉版。
已在AnalyticDB for MySQL叢集中建立Job型資源群組。
已建立AnalyticDB for MySQL叢集的資料庫帳號。
如果是通過阿里雲帳號訪問,只需建立高許可權帳號。
如果是通過RAM使用者訪問,需要建立高許可權帳號和普通帳號並且將RAM使用者綁定到普通帳號上。
已建立RDS for PostgreSQL執行個體,且與AnalyticDB for MySQL所屬同一VPC。
已為RDS for PostgreSQL執行個體建立資料庫帳號。
已為RDS for PostgreSQL執行個體設定安全性群組,且安全性群組規則的入方向與出方向允許存取RDS for PostgreSQL連接埠的訪問請求。
已將RDS for PostgreSQL執行個體所屬交換器的網段加入至RDS for PostgreSQL白名單。
步驟一:資料準備
在RDS for PostgreSQL中建立schemademo和表tbl,並插入資料。樣本語句如下:
CREATE SCHEMA demo;
CREATE TABLE tbl (
id INTEGER,
first_name VARCHAR(32),
laster_name VARCHAR(32),
age INTEGER
);
INSERT INTO tbl VALUES(1,'a','b',5);
INSERT INTO tbl VALUES(2,'c','d',6);
INSERT INTO tbl VALUES(3,'e','f',7);步驟二:下載並上傳RDS for PostgreSQL驅動程式
在官方網站下載適配RDS for PostgreSQL版本的驅動程式。下載地址,請參見 postgresql。
本文以postgresql-42.7.7.jar包為例。
將RDS for PostgreSQL驅動程式上傳至OSS。
步驟三:提交Spark SQL作業
登入雲原生資料倉儲AnalyticDB MySQL控制台,在左上方選擇叢集所在地區。在左側導覽列,單擊集群清單,然後單擊目的地組群ID。
在左側導覽列,單擊。
在SQLConsole視窗,選擇Spark引擎和Job型資源群組。
在SQLConsole視窗中輸入以下作業內容:
ADD jar oss://testBucketName/postgresql-42.7.7.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:postgresql://pgm-t4n37****.pgsql.singapore.rds.aliyuncs.com:5432/test', driver 'org.postgresql.Driver', dbtable 'demo.tbl', user 'user', password 'password****' ); INSERT INTO table_tmp VALUES(4,'e','f',8); SELECT * FROM table_tmp;參數說明:
參數
說明
ADD jar
RDS for PostgreSQL驅動程式所在的OSS路徑。
本文樣本為postgresql-42.7.7.jar包所在的OSS路徑。
spark.adb.eni.enabled
開啟ENI訪問。
訪問資料時,需將
spark.adb.eni.enabled參數設定為true。spark.adb.eni.vswitchId
RDS for PostgreSQL執行個體的交換器ID。
在RDS for PostgreSQL執行個體資料庫連接的頁面,將滑鼠移動至VPC處,擷取交換器ID。
spark.adb.eni.securityGroupId
RDS for PostgreSQL執行個體中添加的安全性群組ID。
table_tmp
視圖名稱。本文以table_tmp為例。
USING org.apache.spark.sql.jdbc
參數取值固定為
USING org.apache.spark.sql.jdbc。OPTIONS
url:RDS for PostgreSQL執行個體的連結地址、連接埠及資料庫名稱。格式為:
jdbc:postgresql://pgm-t4n37****.pgsql.singapore.rds.aliyuncs.com:5432/db_name。driver :參數取值固定為
org.postgresql.Driver。dbtable:RDS for PostgreSQL的表名。格式為
schema_name.table_name。本文以demo.tbl為例。user:RDS for PostgreSQL資料庫的帳號。
password:RDS for PostgreSQL資料庫帳號的密碼。
單擊執行SQL。
Spark作業執行成功後,您可以在作業開發Spark Jar 開發頁面應用列表頁簽中的日誌查看錶資料。詳情請參見Spark開發編輯器。