MySQL コネクタを使用すると、外部の MySQL インスタンス内のテーブルをクエリおよび作成でき、異なるシステム間(例:MySQL と Hive)または 2 つの MySQL インスタンス間で JOIN 操作を実行できます。
背景情報
MySQL コネクタに関する以下のトピックについて説明します。
前提条件
-
DataLake クラスター、Trino サービスを搭載した Hadoop クラスター、またはスタンドアロンの Trino クラスターが必要です。詳細については、「クラスターの作成」をご参照ください。
-
ApsaraDB RDS for MySQL インスタンスが必要です。詳細については、「ApsaraDB RDS for MySQL インスタンスの迅速な作成」をご参照ください。
制限事項
-
MySQL コネクタは、EMR V3.38.0 以降を実行する Hadoop クラスターや Trino クラスターでサポートされています。
-
MySQL 5.7、8.0 以降が必要です。
-
Trino コーディネーターおよびすべてのワーカーノードから MySQL インスタンスへのネットワークアクセスが必要です。デフォルトポートは 3306 です。
-
以下の SQL ステートメントはサポートされていません。
-
DELETE
-
GRANT
-
REVOKE
-
SHOW GRANTS
-
SHOW ROLES
-
SHOW ROLE GRANTS
-
MySQL コネクタの設定
MySQL コネクタの設定を変更するには、「コネクタの設定」をご参照ください。
デフォルトのコネクタ構成
EMR コンソールの Trino サービス Configure ページで、Service Configuration セクションの mysql.properties タブをクリックし、以下のパラメーターを設定します。
|
パラメーター |
説明 |
|
connection-url |
データベースの JDBC 接続文字列です。詳細については、「インスタンスのエンドポイントとポートの確認および管理」をご参照ください。 例:jdbc:mysql://rm-2ze5ipacsu8265q****.mysql.rds.aliyuncs.com:3306。 |
|
connection-user |
データベースのユーザー名です。このユーザーには、ApsaraDB RDS for MySQL データベース内のテーブルにアクセスする権限が必要です。 |
|
connection-password |
connection-user のパスワードです。 |
複数の MySQL サービスの設定
複数の MySQL サービスがある場合は、etc/catalog ディレクトリ内に各サービスごとに一意の設定ファイルを作成します。各ファイルには .properties 拡張子を付ける必要があります。たとえば、sales.properties という名前の設定ファイルを作成すると、Trino 内に sales という名前のカタログが作成されます。
設定例
EMR クラスター内で複数の MySQL サービスを設定するには、connector[x].properties を使用してカスタム設定項目を追加します。ここで、x は 1、2、3 などです。以下の手順を実行します。
-
EMR コンソールの Trino サービスの構成ページで、Service Configuration セクションの mysql.properties タブで、connection-user、connection-password、および connection-url パラメーターを変更します。
上部の Add Configuration Item をクリックして、必要な設定項目を追加します。詳細については、「設定項目の追加」をご参照ください。
-
構成を保存します。
-
Service Configuration セクションで、Save をクリックします。
-
表示されるダイアログボックスで、Execution Reason を入力し、Save をクリックします。
-
-
サービスを再起動します。
-
右上隅で、 を選択します。
-
表示されるダイアログボックスで、Execution Reason を入力し、OK をクリックします。
-
Confirm ダイアログボックスで、OK をクリックします。
-
型マッピング
DECIMAL 型
精度が 38 を超える DECIMAL 型を Trino の DECIMAL 型にマッピングするには、decimal_mapping 設定項目または decimal_mapping セッションプロパティを allow_overflow に設定します。結果の型の有効値は decimal-default-scale または decimal-rounding-mode 設定項目によって制御され、その精度は 38 に固定されます。
デフォルトでは、丸めまたは切り捨てが必要な値はランタイムで失敗します。この動作は、decimal-rounding-mode 設定項目または decimal-rounding-mode セッションプロパティによって制御されます。有効値:UNNECESSARY(デフォルト)、UP、DOWN、CEILING、FLOOR、HALF_UP、HALF_DOWN、HALF_EVEN。
一般プロパティ
以下のプロパティは、Trino におけるデータ型マッピングおよびメタデータキャッシングを制御します。
|
パラメーター |
説明 |
|
unsupported-type-handling |
サポートされていない列のデータ型をどのように処理するかを決定します。有効値:
|
|
jdbc-types-mapped-to-varchar |
コンマ区切りのデータ型リストを無制限の VARCHAR にマッピングします。 |
|
case-insensitive-name-matching |
リモートデータベースおよびスキーマ名を大文字小文字を区別せずに一致させるかどうかを指定します。有効値:
|
|
case-insensitive-name-matching.cache-ttl |
大文字小文字を区別しないリモート名の一致に対するキャッシュ持続時間です。 デフォルトは 1m です。 |
|
metadata.cache-ttl |
テーブルや列統計情報などのメタデータに対するキャッシュ持続時間です。 デフォルト値 0 はキャッシュを無効にします。 |
|
metadata.cache-missing |
テーブルや列統計情報など、メタデータ検索の失敗結果をキャッシュするかどうかを指定します。有効値:
|
例:MySQL のクエリ
-
RDS データベースを表示します。
-
SSH を使用してクラスターに接続します。詳細については、「クラスターへのログイン」をご参照ください。
-
次のコマンドを実行して、Trino クライアントに接続します。
-
DataLake クラスター
trino --server master-1-1:9090 --catalog iceberg --schema default -
Hadoop またはスタンドアロンの Trino クラスター
trino --server emr-header-1:9090 --catalog iceberg --schema default
-
-
次のコマンドを実行してスキーマを表示します。
SHOW schemas FROM mysql;説明mysql はプロパティ設定ファイルの名前です。
-
次のコマンドを実行してデータベースを表示します。
SHOW tables FROM mysql.web;説明本記事の例では、web は MySQL で作成したデータベースです。
-
-
テーブルデータをクエリします。
-
mysql.web.clicks テーブルからデータをクエリします。
SELECT * FROM mysql.web.clicks; -
mysql.web.clicks テーブルの列情報をクエリします。
SHOW columns FROM mysql.web.clicks;または、次のコマンドを実行してテーブルを記述します。
DESCRIBE mysql.web.clicks;
-
プッシュダウン
プッシュダウンの詳細については、Trino ドキュメントの「Pushdown」をご参照ください。
MySQL コネクタは、以下のオペレーターおよび関数をプッシュダウンします。
-
オペレーター
-
Join
-
Limit
-
Top-N
-
-
関数
-
avg()
-
count()
-
max()
-
min()
-
sum()
-
stddev()
-
stddev_pop()
-
stddev_samp()
-
variance()
-
var_pop()
-
var_samp()
-