通過Spark SQL讀寫Azure Blob Storage外表

更新時間:
Copy as MD

本文主要介紹如何在AnalyticDB for MySQL中使用Spark SQL讀寫Azure Blob Storage中的資料。

前提條件

操作步驟

  1. 下載AnalyticDB for MySQLSpark訪問Azure Blob Storage所依賴的JAR包。下載連結,請參見hadoop-azure-datalake-3.3.0.jarhadoop-azure-3.3.0.jar

  2. 將兩個JAR包上傳至OSS。本文上傳路徑以oss://testBucketName/path/to為例。具體操作,請參見簡單上傳

  3. 登入雲原生資料倉儲AnalyticDB MySQL控制台,在左上方選擇叢集所在地區。在左側導覽列,單擊集群清單,然後單擊目的地組群ID。

  4. 在左側導覽列,單擊作業開發 > SQL開發

  5. 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應用配置參數說明

  6. 單擊運行,執行完成後,您可以在Spark Jar 開發頁面應用列表頁簽中的日誌查看資料。詳情請參見Spark開發編輯器