MySQLコネクタを使用すると、外部MySQLインスタンスのテーブル内のデータをクエリし、インスタンスにテーブルを作成できます。コネクタを使用すると、MySQLとHiveなどの2つのシステム間、または2つのMySQLインスタンス間のテーブルを結合できます。
背景情報
このトピックでは、以下のセクションでMySQLコネクタに関する情報を説明します。
前提条件
TrinoサービスがデプロイされたHadoopまたはデータレイククラスターが作成されているか、Trinoクラスターが作成されています。詳細については、「クラスターの作成」をご参照ください。
ApsaraDB RDS for MySQLインスタンスが購入されています。詳細については、「ApsaraDB RDS for MySQLインスタンスの作成」をご参照ください。
制限事項
E-MapReduce(EMR) V3.38.0以降のHadoopまたはTrinoクラスターのみがMySQLコネクタをサポートしています。
MySQL 5.7、8.0以降を実行するApsaraDB RDS for MySQLインスタンスにのみ、MySQLコネクタを使用して接続できます。
TrinoのコーディネーターノードとすべてのワーカーノードがMySQLにアクセスできることを確認してください。デフォルトポートは 3306 です。
MySQLコネクタは、次のSQLステートメントをサポートしていません。
DELETE
GRANT
REVOKE
SHOW GRANTS
SHOW ROLES
SHOW ROLE GRANTS
MySQLコネクタの構成
MySQLコネクタの構成を変更します。詳細については、「コネクタの構成」をご参照ください。
コネクタのデフォルト構成
EMRコンソールにログインします。Trinoサービスの [構成] タブに移動します。[構成]タブで、[mysql.properties] タブをクリックします。ビジネス要件に基づいて構成項目を変更します。次の表に、構成項目を示します。
構成項目 | 説明 |
connection-url | アクセスするApsaraDB RDS for MySQLデータベースのURL。詳細については、「インスタンスのエンドポイントとポートの表示と管理」をご参照ください。 例: jdbc:mysql://rm-2ze5ipacsu8265q****.mysql.rds.aliyuncs.com:3306。 |
connection-user | データベースへのアクセスに使用するユーザー名。アカウントにデータベース内のテーブルにアクセスするための権限があることを確認してください。 |
connection-password | connection-user 構成項目で指定されたアカウントのパスワード。 |
複数のMySQLサービスの構成
複数のMySQLサービスに接続する場合、etc/catalog ディレクトリに複数の構成ファイルを作成できます。ファイル名が異なり、ファイル名拡張子が .properties であることを確認してください。たとえば、sales.properties という名前の構成ファイルを作成すると、Trinoはファイルで構成されたコネクタを使用して、sales という名前のカタログを作成します。
例
複数のMySQLサービスに接続する場合、connector[x].properties タブでカスタム構成項目を追加して、MySQLサービスのコネクタプロパティを構成できます。各 connector[x].properties タブの名前で、x は 1 から始まる整数を示します。次の手順を実行します。
EMRコンソールにログインします。Trinoサービスの [構成] タブに移動します。[構成]タブで、[mysql.properties] タブをクリックします。[connection-user]、[connection-password]、および [connection-url] 構成項目を変更します。
[構成]タブの上部にある [構成項目の追加] をクリックして、カスタム構成項目を追加することもできます。詳細については、「構成項目の管理」トピックの「構成項目の追加」セクションをご参照ください。
構成を保存します。
[構成] タブの下部にある [保存] をクリックします。
表示されるダイアログボックスで、[実行理由] パラメーターを構成し、[保存] をクリックします。
Trinoサービスを再起動します。
右上隅で、
を選択します。表示されるダイアログボックスで、[実行理由] フィールドに理由を入力し、[OK] をクリックします。
[確認] メッセージで、[OK] をクリックします。
データ型マッピング
DECIMAL型のデータの処理
精度の 38 より大きい MySQL 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 に設定できます。デフォルト値は UNNECESSARY です。
一般的な構成プロパティ
次の表で説明されているプロパティを構成して、データソースのデータ型をTrinoのデータ型にマップし、Trinoにメタデータをキャッシュできます。
プロパティ | 説明 |
unsupported-type-handling | データ型がサポートされていない列を処理するために使用されるメソッド。有効な値:
|
jdbc-types-mapped-to-varchar | カンマ(,)で区切られた要素で構成されるデータを、無制限の VARCHAR 型のデータに強制的に変換することを許可するかどうかを指定します。 |
case-insensitive-name-matching | データベースとテーブルの名前で大文字と小文字が区別されるかどうかを指定します。有効な値:
|
case-insensitive-name-matching.cache-ttl | 大文字と小文字が区別されないデータベース名とテーブル名のキャッシュ有効期限(TTL)。 デフォルト値: 1 。単位:分。 |
metadata.cache-ttl | テーブルと列の統計情報を含むメタデータのキャッシュ TTL 。 デフォルト値: 0 。値 0 は、メタデータをキャッシュできないことを示します。 |
metadata.cache-missing | テーブルと列の統計情報を含むメタデータの状態をキャッシュするかどうかを指定します。有効な値:
|
例:MySQLデータのクエリ
ApsaraDB RDS for MySQLデータベースに関する情報を表示します。
SSHモードでクラスターにログインします。詳細については、「クラスターへのログイン」をご参照ください。
次のコマンドを実行して、Trinoクライアントに接続します。
DataLakeクラスター
trino --server master-1-1:9090 --catalog iceberg --schema default // DataLake cluster
HadoopクラスターまたはTrinoクラスター
trino --server emr-header-1:9090 --catalog iceberg --schema default // Hadoop or Trino cluster
次のコマンドを実行して、スキーマを表示します。
SHOW schemas FROM mysql;
説明mysql は、.properties構成ファイルの名前です。
次のコマンドを実行して、データベースを表示します。
SHOW tables FROM mysql.web;
説明この例では、web は ApsaraDB RDS for MySQL データベースの名前です。
テーブル内のデータをクエリします。
次のステートメントを実行して、mysql.web.clicks テーブルのデータをクエリします。
SELECT * FROM mysql.web.clicks
次のステートメントを実行して、mysql.web.clicks テーブルの列に関する情報をクエリします。
SHOW columns FROM mysql.web.clicks;
次のステートメントを実行して、列に関する情報をクエリすることもできます。
DESCRIBE mysql.web.clicks;
プッシュダウン
プッシュダウン機能の詳細については、Trino公式ドキュメントのプッシュダウンを参照してください。
MySQLコネクタは、次の演算子と関数に対してプッシュダウン機能をサポートしています。
演算子
Join
Limit
Top-N
関数
avg()
count()
max()
min()
sum()
stddev()
stddev_pop()
stddev_samp()
variance()
var_pop()
var_samp()