AnalyticDB for MySQL では、Spark SQL ジョブを送信できます。ビューを使用して、自主管理 PostgreSQL データベースまたは ApsaraDB RDS for PostgreSQL データベースにアクセスできます。このトピックでは、RDS for PostgreSQL を例として、Spark SQL を使用して RDS for PostgreSQL データベースのデータを読み書きする方法について説明します。
前提条件
AnalyticDB for MySQL の Enterprise Edition、Basic Edition、または Data Lakehouse Edition のクラスターが作成されていること。
AnalyticDB for MySQL クラスター用のジョブリソースグループが作成されていること。
AnalyticDB for MySQL クラスター用のデータベースアカウントが作成されていること。
Alibaba Cloud アカウントを使用する場合は、特権アカウントを作成するだけで済みます。
Resource Access Management (RAM) ユーザーを使用する場合は、特権アカウントと標準アカウントを作成し、標準アカウントを RAM ユーザーに関連付ける必要があります。
AnalyticDB for MySQL クラスターと同じ VPC 内に RDS for PostgreSQL インスタンスが作成されていること。
RDS for PostgreSQL インスタンス用のデータベースアカウントが作成されていること。
RDS for PostgreSQL インスタンスのセキュリティグループが設定されていること。セキュリティグループルールでは、RDS for PostgreSQL のポートへのインバウンドおよびアウトバウンドアクセスを許可する必要があります。
RDS for PostgreSQL インスタンスに関連付けられている vSwitch のネットワークセグメントが RDS for PostgreSQL のホワイトリストに追加されていること。
ステップ 1:データの準備
RDS for PostgreSQL で、demo という名前のスキーマと tbl という名前のテーブルを作成し、データを挿入します。次のコードは、サンプル文です。
CREATE SCHEMA demo;
CREATE TABLE demo.tbl (
id INTEGER,
first_name VARCHAR(32),
last_name VARCHAR(32),
age INTEGER
);
INSERT INTO demo.tbl VALUES(1,'a','b',5);
INSERT INTO demo.tbl VALUES(2,'c','d',6);
INSERT INTO demo.tbl VALUES(3,'e','f',7);ステップ 2:RDS for PostgreSQL ドライバーのダウンロードとアップロード
公式サイトから、ご利用の RDS for PostgreSQL のバージョンと互換性のあるドライバーをダウンロードします。詳細については、「postgresql」をご参照ください。
このトピックでは、postgresql-42.7.7.jar パッケージを例として使用します。
RDS for PostgreSQL ドライバーを OSS にアップロードします。
ステップ 3:Spark SQL ジョブの送信
AnalyticDB for MySQL コンソールにログインします。コンソールの左上でリージョンを選択します。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。管理するクラスターを見つけ、クラスター ID をクリックします。
左側のナビゲーションウィンドウで、 をクリックします。
[SQLConsole] ウィンドウで、Spark エンジンとジョブ固有のリソースグループを選択します。
[SQLConsole] ウィンドウに、次のジョブ内容を入力します。
ADD jar oss://testBucketName/postgresql-42.7.7.jar; 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:postgresql://pgm-t4n37****.pgsql.singapore.rds.aliyuncs.com:5432/test', driver 'org.postgresql.Driver', dbtable 'demo.tbl', user 'user', password 'password****' ); INSERT INTO table_tmp VALUES(4,'e','f',8); SELECT * FROM table_tmp;次の表にパラメーターを示します。
パラメーター
説明
ADD jar
RDS for PostgreSQL ドライバーの OSS パスです。
このトピックの例は、postgresql-42.7.7.jar パッケージの OSS パスです。
spark.adb.eni.enabled
Elastic Network Interface (ENI) アクセスを有効にします。
データにアクセスするには、
spark.adb.eni.enabledパラメーターを true に設定します。spark.adb.eni.vswitchId
RDS for PostgreSQL インスタンスの vSwitch の ID です。
RDS for PostgreSQL インスタンスの データベースの接続 ページで、VPC にポインターを合わせると vSwitch ID を取得できます。
spark.adb.eni.securityGroupId
RDS for PostgreSQL インスタンスに関連付けられているセキュリティグループ ID です。
table_tmp
ビューの名前です。このトピックでは、table_tmp を例として使用します。
USING org.apache.spark.sql.jdbc
このパラメーターの値は
USING org.apache.spark.sql.jdbcに固定されています。OPTIONS
url:RDS for PostgreSQL インスタンスの接続エンドポイント、ポート番号、およびデータベース名です。フォーマットは
jdbc:postgresql://pgm-t4n37****.pgsql.singapore.rds.aliyuncs.com:5432/db_nameです。driver:このパラメーターの値は
org.postgresql.Driverに固定されています。dbtable:RDS for PostgreSQL 内のテーブルの名前です。フォーマットは
schema_name.table_nameです。このトピックでは、demo.tblを例として使用します。user:RDS for PostgreSQL のデータベースアカウントです。
password:RDS for PostgreSQL データベースアカウントのパスワードです。
SQL の実行 をクリックします。
Spark ジョブが正常に実行された後、ジョブを開発する > Spark Jar 開発 ページの アプリケーションリスト タブにある ログ でテーブルデータを確認できます。詳細については、「Spark 開発エディター」をご参照ください。