AnalyticDB for MySQLSpark支援訪問同帳號或其他阿里雲帳號(跨帳號)下Object Storage Service中的資料,本文介紹同帳號或跨帳號訪問Object Storage Service資料的具體方法。
前提條件
AnalyticDB for MySQL叢集的產品系列為湖倉版。
AnalyticDB for MySQL叢集與OSS儲存空間位於相同地區。
已在AnalyticDB for MySQL叢集中建立Job型資源群組。具體操作,請參見建立資源群組。
已建立AnalyticDB for MySQL叢集的資料庫帳號。
如果是通過阿里雲帳號訪問,只需建立高許可權帳號。具體操作,請參見建立高許可權帳號。
如果是通過RAM使用者訪問,需要建立高許可權帳號和普通帳號並且將RAM使用者綁定到普通帳號上。具體操作,請參見建立資料庫帳號和綁定或解除綁定RAM使用者與資料庫帳號。
已完成授權操作。具體操作,請參見快速授權。
重要同帳號訪問時,需具備AliyunADBSparkProcessingDataRole許可權;跨帳號訪問時,需要對其他阿里雲帳號授權。
步驟一:資料準備
準備用於資料讀取的文字檔,將文字檔上傳至OSS。本文樣本的文字檔名為
readme.txt
。具體操作,請參見上傳檔案。雲原生資料倉儲AnalyticDB MySQL版 資料庫產品
編寫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資料
登入雲原生資料倉儲AnalyticDB MySQL控制台,在左上方選擇叢集所在地區。在左側導覽列,單擊集群清單,在湖倉版頁簽下,單擊目的地組群ID。
在左側導覽列,單擊
。在編輯器視窗上方,選擇Job型資源群組和Spark應用類型。本文以Batch類型為例。
在編輯器中輸入以下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應用配置參數說明。單擊運行。
執行完成後,您可以在Spark Jar開發頁面應用列表頁簽中的日誌查看資料。詳情請參見Spark開發編輯器。
相關文檔
Spark應用的開發概述,請參見Spark應用開發介紹。
Spark應用的配置參數說明,請參見Spark應用配置參數說明。