AnalyticDB for MySQL では、Spark SQL ジョブを送信して、自己管理 SQL Server データベースまたはビューモードの ApsaraDB RDS for SQL Server にアクセスできます。このトピックでは、Spark SQL を使用して ApsaraDB RDS for SQL Server からデータにアクセスする方法について説明します。
前提条件
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 に ApsaraDB RDS for SQL Server インスタンスが作成されていること。
ApsaraDB RDS for SQL Server インスタンスが セキュリティグループに追加されていること。セキュリティグループのインバウンドルールとアウトバウンドルールで、ApsaraDB RDS for SQL Server インスタンスのポートからのリクエストが許可されていること。
ApsaraDB RDS for SQL Server インスタンスが接続されている vSwitch の CIDR ブロックが、ApsaraDB RDS for SQL Server インスタンスの IP アドレス ホワイトリスト に追加されます。
手順 1:データの準備
ApsaraDB RDS for SQL Server インスタンスにデータベースを作成し、データベースにテーブルを作成し、テーブルにデータを挿入します。サンプル文:
CREATE DATABASE db;
CREATE TABLE test (
id INT NULL,
first_name NVARCHAR(32) NULL,
last_name NVARCHAR(32) NULL,
age INT NULL
);
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:ApsaraDB RDS for SQL Server ドライバーのダウンロードとアップロード
ダウンロードしたドライバー パッケージを解凍します。アップロード サフィックスが jre8.jar の JAR パッケージを Object Storage Service (OSS) の jars フォルダにアップロードします。
手順 3:Spark SQL ジョブの送信Spark SQL ジョブを送信する
AnalyticDB for MySQL コンソール にログインします。コンソールの左上隅で、リージョンを選択します。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。 Enterprise Edition、Basic Edition、または Data Lakehouse Edition タブで、管理するクラスタを見つけ、クラスタ ID をクリックします。
左側のナビゲーションウィンドウで、
を選択します。[SQLConsole] タブで、Spark エンジンとジョブリソースグループを選択します。
[[SQLConsole] タブで、アクセスモードに基づいてパラメータを設定します。タブで、アクセスモードに基づいてパラメーターを構成します。
ADD jar oss://testBucketName/mssql-jdbc-12.8.1.jre8.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:mysql://rm-t4nn744j34****.mssql.singapore.rds.aliyuncs.com:1433;databaseName=db;trustServerCertificate=true;encrypt=true;>', // データベース名を設定します driver 'com.microsoft.sqlserver.jdbc.SQLServerDriver', dbtable '<tableName>', // テーブル名を設定します user '<user>', // データベースアカウント名を設定します password '<password>' // データベースアカウントのパスワードを設定します ); INSERT INTO table_tmp VALUES(4,'e','f',8); SELECT * FROM table_tmp;
次の表にパラメータを示します。
パラメータ
必須
説明
JAR を追加
はい
ApsaraDB RDS for SQL Server ドライバーの OSS パス。
この例では、 mssql-jdbc-12.8.1.jre8.jar ファイルの OSS パスが使用されています。この例では、OSS パスはファイルが使用されます。
spark.adb.eni.enabled
はい
ENI を有効にするかどうかを指定します。 弾性ネットワークインターフェース (ENI)。
データにアクセスする場合は、
spark.adb.eni.enabled
パラメーターを true に設定する必要があります。spark.adb.eni.vswitchId
はい
ApsaraDB RDS for SQL Server インスタンスの vSwitch ID。 vSwitch ID を表示するには、[データベース接続] ページで VPC にポインタを移動します。
spark.adb.eni.securityGroupId
はい
ApsaraDB RDS for SQL Server インスタンスが追加されているセキュリティグループの ID。 詳細については、「セキュリティグループ設定の構成」をご参照ください。
USING org.apache.spark.sql.jdbc
はい
このパラメータの値は自動的に
USING org.apache.spark.sql.jdbc
に設定されます。OPTIONS
はい
url: ApsaraDB RDS for SQL Server インスタンスの内部エンドポイントとポート番号。形式:
jdbc:sqlserver://rm-t4nn744j34****.mssql.singapore.rds.aliyuncs.com:1433;databaseName=db;trustServerCertificate=true;encrypt=true;
。 databaseName パラメーターをデータベースの実際の名前に設定します。trustServerCertificate
パラメーターとencrypt
パラメーターをtrue
に設定します。ドライバー: このパラメーターの値は、
com.microsoft.sqlserver.jdbc.SQLServerDriver
に自動的に設定されます。dbtable: ApsaraDB RDS for SQL Server インスタンス内のテーブルの名前。形式:
db_name.table_name
。この例では、db.test を使用します。user: ApsaraDB RDS for SQL Server インスタンスのデータベースアカウント名。
password: データベースアカウントのパスワード。
クリック [実行]します。
Spark ジョブを実行した後、Spark ジョブを実行した後、[Spark JAR 開発] ページに移動し、 ページで [クリック] ログ [アクション] 列の [アプリケーション] タブの [アクション] 列にある タブをクリックしてテーブルデータを表示します。詳細については、「Spark エディター。 をクリックして、テーブルデータを表示します。 詳細については、「」をご参照ください。