すべてのプロダクト
Search
ドキュメントセンター

AnalyticDB:Spark SQL を使用した MySQL からのデータ読み取り

最終更新日:Mar 29, 2026

AnalyticDB for MySQL を使用すると、Spark SQL ジョブを送信して、自己管理 MySQL データベース、ApsaraDB RDS for MySQL、または PolarDB for MySQL からデータをクエリできます。このトピックでは、ビューモードとカタログモードの 2 つのアクセスモードを使用して、ApsaraDB RDS for MySQL データを読み取る方法について説明します。

前提条件

開始する前に、以下を準備してください。

ステップ 1: データ準備

ApsaraDB RDS for MySQL インスタンスにデータベースとテーブルを作成し、サンプル行を挿入します。

CREATE DATABASE `db`;

CREATE TABLE `db`.`test` (
  `id` int(11) DEFAULT NULL,
  `first_name` varchar(32) DEFAULT NULL,
  `laster_name` varchar(32) DEFAULT NULL,
  `age` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO test VALUES(1,'a','b',5);
INSERT INTO test VALUES(2,'c','d',6);
INSERT INTO test VALUES(3,'e','f',7);

ステップ 2: (オプション) CA 証明書と ApsaraDB RDS for MySQL ドライバーのアップロード

SSL 暗号化が不要な場合は、このステップをスキップしてください。直接「ステップ 3: Spark SQL ジョブの送信」に進みます。
  1. ApsaraDB RDS for MySQL インスタンスで SSL 暗号化を有効にし、CA 証明書をダウンロードします。詳細については、「SSL 暗号化機能の設定」をご参照ください。

    重要

    内部接続またはパブリック接続を暗号化できます。この例では内部接続を使用します。CA 証明書は 1 年間有効です。有効期限が切れる前に新しい証明書を生成してください。期限切れの証明書では SSL 接続を確立できません。

  2. https://dev.mysql.com/downloads/connector/j/ から、ご利用の ApsaraDB RDS for MySQL エンジンバージョンに一致する JDBC ドライバーをダウンロードします。この例では、mysql-connector-java-8.0.29.jar を使用します。

  3. CA 証明書パッケージを抽出します。JKS ファイルとドライバー JAR を Object Storage Service (OSS) にアップロードします。「オブジェクトのアップロード」をご参照ください。

ステップ 3: Spark SQL ジョブの送信

  1. AnalyticDB for MySQL コンソール」にログインします。左上隅でリージョンを選択します。左側のナビゲーションウィンドウで、[クラスター] をクリックします。[Data Lakehouse Edition] タブで、クラスター ID をクリックします。

  2. 左側のナビゲーションウィンドウで、[ジョブ開発 > SQL 開発] を選択します。

  3. [SQLConsole] タブで、Spark エンジンとジョブリソースグループを選択します。

  4. アクセスモードの SQL を入力して実行します。

重要

以下の例では、userpassword にプレースホルダー値を使用しています。本番ジョブで認証情報をハードコードしないでください。それらを安全に保存し、ランタイム時に参照してください。

ビューモード

ビューモードでは、Spark SQL は JDBC を使用して MySQL テーブル上の一時ビューを作成します。このビューはセッションスコープであり、新しいジョブを開始するたびに再作成する必要があります。

次のいずれかの接続方法を選択してください。

弾性ネットワークインターフェース (ENI) 経由で接続

set spark.adb.eni.enabled=true;
set spark.adb.eni.vswitchId=<vsw-bp1sxxsodv28ey5dl****>;
set spark.adb.eni.securityGroupId=<sg-bp19mr685pmg4ihc****>;

CREATE TEMPORARY VIEW table_tmp
USING org.apache.spark.sql.jdbc
OPTIONS (
  url '<jdbc:mysql://rm-bp1k87323a7ia****.mysql.rds.aliyuncs.com:3306>',
  dbtable '<db.test>',
  user '<user>',
  password '<password>'
);

SELECT * FROM table_tmp;

プレースホルダーを実際の値に置き換えてください。

パラメーター説明
spark.adb.eni.enabledtrue を設定して ENI ルーティングを有効化します。
spark.adb.eni.vswitchIdApsaraDB RDS for MySQL インスタンスの vSwitch ID です。データベース接続 ページで、VPC 上にマウスカーソルを合わせると、vSwitch ID を確認できます。
spark.adb.eni.securityGroupIdセキュリティグループ ID です。詳細については、「ApsaraDB RDS for MySQL インスタンスへのセキュリティグループの設定
urlインスタンスの内部エンドポイントおよびポートです。形式: jdbc:mysql://<endpoint>:<port>
dbtable読み取り対象のテーブルです。形式: db_name.table_name。本例では db_1.table_11 を使用します。
userデータベースアカウント名です。
passwordデータベースアカウントのパスワードです。

SSL 経由で接続

add jar oss://<bucketname>/mysql-connector-java-8.0.11.jar;
set spark.app.name=SSL_RDS_SQL;
set spark.adb.eni.enabled=true;
set spark.adb.eni.vswitchId=<vsw-bp1sxxsodv28ey5dl****>;
set spark.adb.eni.securityGroupId=<sg-bp19mr685pmg4ihc****>;
set spark.kubernetes.driverEnv.ADB_SPARK_DOWNLOAD_FILES=oss://<bucketname>/ApsaraDB-CA-Chain.jks;
set spark.executorEnv.ADB_SPARK_DOWNLOAD_FILES=oss://<bucketname>/ApsaraDB-CA-Chain.jks;

CREATE TEMPORARY VIEW table_view
USING org.apache.spark.sql.jdbc
OPTIONS (
  url '<jdbc:mysql://rm-bp1k87323a7ia****.mysql.rds.aliyuncs.com:3306/?useSSL=true&clientCertificateKeyStoreUrl=file:///tmp/<bucketname>/folder/ApsaraDB-CA-Chain.jks&clientCertificateKeyStorePassword=apsaradb&trustCertificateKeyStoreUrl=file:///tmp/<bucketname>/folder/ApsaraDB-CA-Chain.jks&trustCertificateKeyStorePassword=apsaradb&trustCertificateKeyStoreType=JKS&clientCertificateKeyStoreType=JKS>',
  dbtable '<db.test>',
  user '<user>',
  password '<password>'
);

プレースホルダーを実際の値に置き換えてください。

パラメーター説明
add jarJDBC ドライバーの OSS パスです。この例では mysql-connector-java-8.0.11.jar
spark.app.nameSpark SQL ジョブ名です
spark.adb.eni.enabledENI ルーティングを有効にするには true に設定します
spark.adb.eni.vswitchIdインスタンスの vSwitch ID です。[データベース接続] ページで、[VPC] の上にマウスをホバーすると、ID を表示できます。
spark.adb.eni.securityGroupIdセキュリティグループ ID です
spark.kubernetes.driverEnv.ADB_SPARK_DOWNLOAD_FILESSpark ドライバーの JKS 証明書の OSS パスです。複数のパスはコンマで区切ります。例: oss://testBucketName/a.jks,oss://testBucketName/b.jks
spark.executorEnv.ADB_SPARK_DOWNLOAD_FILESSpark エグゼキュータの JKS 証明書の OSS パスです。複数のパスはコンマで区切ります
url内部エンドポイント、ポート、および SSL パラメーターです。JKS キーストアパスワードは apsaradb で、ストアタイプは JKS です。SSL パラメーターの詳細については、「パラメーター」セクションをご参照ください
dbtable読み取るテーブルです。形式: db_name.table_name。この例では db.test
userデータベースアカウント名です
passwordデータベースアカウントのパスワードです

カタログモード

カタログモードでは、Spark の JDBC カタログインターフェースを使用して MySQL データソースを設定します。次のステートメントを実行してカタログを登録し、データをクエリします。

set spark.adb.eni.enabled=true;
set spark.adb.eni.vswitchId=<vsw-bp1d14ddiw46fkgu1****>;
set spark.adb.eni.securityGroupId=<sg-bp19varsa8j0hyb****>;
set spark.sql.catalog.jdbc=org.apache.spark.sql.execution.datasources.v2.jdbc.JDBCTableCatalog;
set spark.sql.catalog.jdbc.url=<jdbc:mysql://rm-bp11mpql1e01l****.mysql.rds.aliyuncs.com:3306>;
set spark.sql.catalog.jdbc.user=<user>;
set spark.sql.catalog.jdbc.password=<password>;
USE jdbc;
SELECT * FROM db.test;

プレースホルダーを実際の値に置き換えてください。

パラメーター説明
spark.sql.catalog.jdbcカタログ実装クラスです。常に org.apache.spark.sql.execution.datasources.v2.jdbc.JDBCTableCatalog に設定します。サフィックス jdbc はカタログ名です。必要に応じてカスタム名に置き換えてください (例: spark.sql.catalog.mycatalog)
spark.sql.catalog.jdbc.urlインスタンスの内部エンドポイントとポートです。形式: jdbc:mysql://<endpoint>:<port>
spark.sql.catalog.jdbc.userデータベースアカウント名です
spark.sql.catalog.jdbc.passwordデータベースアカウントのパスワードです
Spark SQL でサポートされている JDBC パラメーターの完全なリストについては、「JDBC を他のデータベースに接続する」をご参照ください。