全部產品
Search
文件中心

AnalyticDB:訪問OSS資料來源

更新時間:Sep 25, 2024

AnalyticDB for MySQLSpark支援訪問同帳號或其他阿里雲帳號(跨帳號)下Object Storage Service中的資料,本文介紹同帳號或跨帳號訪問Object Storage Service資料的具體方法。

前提條件

  • AnalyticDB for MySQL叢集的產品系列為湖倉版

  • AnalyticDB for MySQL叢集與OSS儲存空間位於相同地區。

  • 已在AnalyticDB for MySQL叢集中建立Job型資源群組。具體操作,請參見建立資源群組

  • 已建立AnalyticDB for MySQL叢集的資料庫帳號。

  • 已完成授權操作。具體操作,請參見快速授權

    重要

    同帳號訪問時,需具備AliyunADBSparkProcessingDataRole許可權;跨帳號訪問時,需要對其他阿里雲帳號授權。

步驟一:資料準備

  1. 準備用於資料讀取的文字檔,將文字檔上傳至OSS。本文樣本的文字檔名為readme.txt。具體操作,請參見上傳檔案

    雲原生資料倉儲AnalyticDB MySQL版
    資料庫產品
  2. 編寫Python程式,將Python程式上傳至OSS。本文樣本的Python程式名為example.py,用於讀取文字檔readme.txt的第一行內容。

    import sys
    
    from pyspark.sql import SparkSession
    
    # 初始Spark
    spark = SparkSession.builder.appName('OSS Example').getOrCreate()
    # 讀取指定的檔案,檔案路徑由args傳入的參數值來指定
    textFile = spark.sparkContext.textFile(sys.argv[1])
    # 計算檔案行數並列印
    print("File total lines: " + str(textFile.count()))
    # 列印檔案的第一行內容
    print("First line is: " + textFile.first())
    

步驟二:訪問OSS資料

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

  2. 在左側導覽列,單擊作業開發 > Spark Jar 開發

  3. 在編輯器視窗上方,選擇Job型資源群組和Spark應用類型。本文以Batch類型為例。

  4. 在編輯器中輸入以下Spark代碼。讀取OSS中的檔案並列印出來行數和第一行內容。

    同帳號訪問OSS資料

    {
      "args": ["oss://testBucketName/data/readme.txt"],
      "name": "spark-oss-test",
      "file": "oss://testBucketName/data/example.py",
      "conf": {
        "spark.driver.resourceSpec": "small",
        "spark.executor.resourceSpec": "small",
        "spark.executor.instances": 1
      }
    }

    參數說明:

    參數名稱

    參數說明

    args

    傳入Spark應用的參數值,多個參數值之間以英文逗號(,)分隔。

    本文樣本將文字檔的OSS路徑賦值給textFile

    name

    Spark應用的名稱。

    file

    Spark應用主檔案的儲存路徑。主檔案是入口類所在的JAR包或者Python的入口執行檔案。

    重要

    Spark應用主檔案目前只支援儲存在OSS中。

    spark.adb.roleArn

    跨帳號訪問外部資料源時使用的RAM角色。多個角色之間使用英文逗號(,)隔開。格式為acs:ram::<testAccountID>:role/<testUserName>

    • <testAccountID>:外部資料源所在的阿里雲帳號ID。

    • <testUserName>:跨帳號授權時,所建立的RAM角色名稱。詳細資料,請參見帳號授權

    說明

    同帳號訪問OSS資料來源時無需配置該參數。

    conf

    與開源Spark中的配置項基本一致,參數格式為key: value形式,多個參數之間以英文逗號(,)分隔。與開源Spark用法不一致的配置參數及AnalyticDB for MySQL特有的配置參數,請參見Spark應用配置參數說明

    跨帳號訪問OSS資料

    {
      "args": ["oss://testBucketName/data/readme.txt"],
      "name": "CrossAccount",
      "file": "oss://testBucketName/data/example.py",
      "conf": {
        "spark.adb.roleArn": "acs:ram::testAccountID:role/<testUserName>",
        "spark.driver.resourceSpec": "small",
        "spark.executor.resourceSpec": "small",
        "spark.executor.instances": 1  
      }
    }

    參數說明:

    參數名稱

    參數說明

    args

    傳入Spark應用的參數值,多個參數值之間以英文逗號(,)分隔。

    本文樣本將文字檔的OSS路徑賦值給textFile

    name

    Spark應用的名稱。

    file

    Spark應用主檔案的儲存路徑。主檔案是入口類所在的JAR包或者Python的入口執行檔案。

    重要

    Spark應用主檔案目前只支援儲存在OSS中。

    spark.adb.roleArn

    跨帳號訪問外部資料源時使用的RAM角色。多個角色之間使用英文逗號(,)隔開。格式為acs:ram::<testAccountID>:role/<testUserName>

    • <testAccountID>:外部資料源所在的阿里雲帳號ID。

    • <testUserName>:跨帳號授權時,所建立的RAM角色名稱。詳細資料,請參見帳號授權

    說明

    同帳號訪問OSS資料來源時無需配置該參數。

    conf

    與開源Spark中的配置項基本一致,參數格式為key: value形式,多個參數之間以英文逗號(,)分隔。與開源Spark用法不一致的配置參數及AnalyticDB for MySQL特有的配置參數,請參見Spark應用配置參數說明

  5. 單擊運行

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

相關文檔