通過Spark SQL讀寫Azure Blob Storage外表
本文主要介紹如何在AnalyticDB for MySQL中使用Spark SQL讀寫Azure Blob Storage中的資料。
前提條件
AnalyticDB for MySQL叢集的產品系列為企業版、基礎版或湖倉版。
已在AnalyticDB for MySQL叢集中建立Job型資源群組。
已建立AnalyticDB for MySQL叢集的資料庫帳號。
如果是通過阿里雲帳號訪問,只需建立高許可權帳號。
如果是通過RAM使用者訪問,需要建立高許可權帳號和普通帳號並且將RAM使用者綁定到普通帳號上。
AnalyticDB for MySQL叢集與OSS儲存空間位於相同地區。
已授權AnalyticDB for MySQL扮演AliyunADBSparkProcessingDataRole角色來訪問其他雲資源。
-
已配置Spark公網環境。具體操作,請參見Spark應用訪問公網配置說明。
操作步驟
-
下載AnalyticDB for MySQLSpark訪問Azure Blob Storage所依賴的JAR包。下載連結,請參見hadoop-azure-datalake-3.3.0.jar和hadoop-azure-3.3.0.jar。
-
將兩個JAR包上傳至OSS。本文上傳路徑以
oss://testBucketName/path/to為例。具體操作,請參見簡單上傳。 登入雲原生資料倉儲AnalyticDB MySQL控制台,在左上方選擇叢集所在地區。在左側導覽列,單擊集群清單,然後單擊目的地組群ID。
-
在左側導覽列,單擊。
-
在SQL Console視窗,選擇Spark引擎和Job型資源群組,輸入以下作業內容:
SET spark.adb.eni.enabled=true; SET spark.adb.eni.vswitchId=vsw-bp1spuegbpswyk9****; SET spark.adb.eni.securityGroupId=sg-bp18rb6aucqaab****; SET spark.sql.catalogImplementation = hive; SET spark.hadoop.fs.azure.account.key.<儲存賬戶名>.dfs.core.windows.net=<storage_account_key>; ADD JAR 'oss://testBucketName/path/to/hadoop-azure-datalake-3.3.0.jar'; ADD JAR 'oss://testBucketName/path/to/hadoop-azure-3.3.0.jar'; -- Here are your sql statements CREATE DATABASE IF NOT EXISTS azure_test location 'abfss://<容器名稱>@<儲存賬戶名>.dfs.core.windows.net/spark_test/db'; USE azure_test; CREATE TABLE IF NOT EXISTS test_tbl(id INT, name STRING) location 'abfss://<容器名稱>@<儲存賬戶名>.dfs.core.windows.net/spark_test/db/tbl'; INSERT INTO test_tbl VALUES (1, 'aaa'); SELECT * FROM test_tbl;參數說明如下:
參數
說明
spark.adb.eni.enabled
是否開啟使用彈性網卡,這裡需要配置為
true。spark.adb.eni.vswitchId
彈性網卡的交換器ID。此處需填寫為Spark公網環境中指定的交換器ID。
spark.adb.eni.securityGroupId
彈性網卡的安全性群組ID,此處需填寫為Spark公網環境中指定的安全性群組ID。
spark.sql.catalogImplementation
Spark使用的Catalog類型,此處需填寫為
hive。spark.hadoop.fs.azure.account.key.<儲存賬戶名>.dfs.core.windows.net
儲存賬戶的存取金鑰。擷取方法,請參見擷取儲存賬戶的連接字串。
其他參數請參見Spark應用配置參數說明。
-
單擊運行,執行完成後,您可以在Spark Jar 開發頁面應用列表頁簽中的日誌查看資料。詳情請參見Spark開發編輯器。