讀寫MaxCompute資料
本文介紹如何在AnalyticDB for MySQL中通過Spark SQL讀寫MaxCompute資料。
前提條件
-
AnalyticDB for MySQL叢集的產品系列為企業版、基礎版或湖倉版。
已建立資料庫帳號。
如果是通過阿里雲帳號訪問,只需建立高許可權帳號。
如果是通過RAM使用者訪問,需要建立高許可權帳號和普通帳號並且將RAM使用者綁定到普通帳號上。
-
已在AnalyticDB for MySQL叢集中建立Job型資源群組。
-
MaxCompute與AnalyticDB for MySQL位於同一地區。具體操作,請參見開通MaxCompute。
-
已建立MaxCompute專案。具體操作,請參見建立MaxCompute專案。
操作步驟
-
登入雲原生資料倉儲AnalyticDB MySQL控制台,在左上方選擇叢集所在地區。在左側導覽列,單擊集群清單,然後單擊目的地組群ID。
-
在左側導覽列,單擊。
-
在SQL Console視窗,選擇Spark引擎和Job型資源群組。
-
編寫Spark SQL作業。
SET spark.adb.version=3.3; SET spark.adb.connectors=odps; SET spark.sql.catalog.odps=org.apache.spark.sql.execution.datasources.v2.odps.OdpsTableCatalog; SET spark.sql.extensions=org.apache.spark.sql.execution.datasources.v2.odps.extension.OdpsExtensions; SET spark.hadoop.odps.project.name=spark_on_maxcompute; SET spark.hadoop.odps.end.point=https://service.cn-hangzhou-vpc.maxcompute.aliyun-inc.com/api; SET spark.hadoop.odps.access.id=yourAccessKeyID; SET spark.hadoop.odps.access.key=yourAccessKeySecret; SET spark.sql.catalog.odps.tableWriteProvider=tunnel; SET spark.sql.catalog.odps.tableReadProvider=tunnel; -- 本樣本中專案名稱為“spark_on_maxcompute”,請確保與spark.hadoop.odps.project.name中的設定保持一致 CREATE TABLE odps.spark_on_maxcompute.spark_test(k1 int, k2 string) partitioned BY (part int); INSERT INTO odps.spark_on_maxcompute.spark_test PARTITION(part=1) VALUES(1, 'aaa'); SELECT * FROM odps.spark_on_maxcompute.spark_test WHERE part=1;參數說明:
參數名稱
取值說明
spark.adb.version
使用的Spark版本。僅
3.3和3.5版本支援訪問MaxCompute資料來源。您任選一個版本即可。spark.adb.connectors
資料來源名稱。讀寫MaxCompute資料時,固定填寫為
odps。spark.sql.catalog.<catalog_name>
Spark SQL支援的配置資料來源的方式。參數名稱中的
catalog_name可自訂。讀寫MaxCompute資料時,該參數取值固定填寫為org.apache.spark.sql.execution.datasources.v2.odps.OdpsTableCatalog。例如:
spark.sql.catalog.odps=org.apache.spark.sql.execution.datasources.v2.odps.OdpsTableCatalog。spark.sql.extensions
Spark SQL擴充。讀寫MaxCompute資料時,固定填寫為
org.apache.spark.sql.execution.datasources.v2.odps.extension.OdpsExtensions。spark.hadoop.odps.project.name
MaxCompute專案(Project)名稱。本文樣本為
spark_on_maxcompute。說明此處為MaxCompute專案名稱,非工作空間名稱。您可以登入MaxCompute控制台,左上方切換地區後,在左側導覽列選擇管理配置 > 项目管理,查看具體的MaxCompute專案名稱。
spark.hadoop.odps.endpoint
MaxCompute所在地區對應VPC網路的Endpoint。
spark.hadoop.odps.access.id
阿里雲帳號或者具備MaxCompute專案存取權限的RAM使用者的AccessKey資訊。
spark.hadoop.odps.access.key
spark.sql.catalog.odps.tableWriteProvider
寫入使用的介面類型。寫MaxCompute資料時,固定填寫為
tunnel,表示通過Tunnel方式寫MaxCompute資料。說明如果您僅需要讀MaxCompute資料,則無需配置該參數。
spark.sql.catalog.odps.tableReadProvider
讀取使用的介面類型。讀MaxCompute資料時,固定填寫為
tunnel,表示通過Tunnel方式讀MaxCompute資料。說明如果您僅需要寫MaxCompute資料,則無需配置該參數。
-
單擊執行SQL。
-
Spark作業執行成功後,您可以在Spark Jar 開發頁面應用列表頁簽中的日誌查看錶資料。詳情請參見Spark開發編輯器。