このトピックでは、AnalyticDB for MySQL の Spark SQL を使用して MaxCompute のデータを読み書きする方法について説明します。
前提条件
AnalyticDB for MySQL の Enterprise Edition、Basic Edition、または Data Lakehouse Edition のクラスターが作成されていること。
AnalyticDB for MySQL クラスター用のデータベースアカウントが作成されていること。
Alibaba Cloud アカウントを使用する場合は、特権アカウントを作成していること。
Resource Access Management (RAM) ユーザーを使用する場合は、特権アカウントと標準アカウントを作成し、標準アカウントを RAM ユーザーに関連付けていること。
AnalyticDB for MySQL クラスター用にジョブリソースグループが作成されていること。
MaxCompute と AnalyticDB for MySQL が同じリージョンにデプロイされていること。 詳細については、「MaxCompute の有効化」をご参照ください。
MaxCompute プロジェクトが作成されていること。 詳細については、「MaxCompute プロジェクトの作成」をご参照ください。
手順
AnalyticDB for MySQL コンソールにログインします。 コンソールの左上隅でリージョンを選択します。 左側のナビゲーションウィンドウで クラスターリスト をクリックします。 管理するクラスターを見つけ、クラスター ID をクリックします。
左側のナビゲーションウィンドウで、 をクリックします。
[SQLConsole] ウィンドウで、Spark エンジンとジョブリソースグループを選択します。
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 プロジェクトの名前。 この例では、値は
spark_on_maxcomputeです。説明これは MaxCompute プロジェクトの名前であり、ワークスペースの名前ではありません。 MaxCompute コンソールにログインし、左上隅でリージョンを切り替え、左側のナビゲーションウィンドウで [設定の管理] > [プロジェクト] を選択して MaxCompute プロジェクトの名前を表示します。
spark.hadoop.odps.endpoint
MaxCompute が存在するリージョンの VPC エンドポイント。
spark.hadoop.odps.access.id
MaxCompute プロジェクトへのアクセス権限を持つ Alibaba Cloud アカウントまたは Resource Access Management (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 開発エディター」をご参照ください。