Trino Connector 統合開発者ガイド
この文書は、Trino Connector プラグインを Apache Doris と統合する開発者向けです。Connector プラグインのコンパイル、FE / BE の設定、trino-connector Catalog の作成と使用について説明します。Kafka Connector を主な例として使用し、Hive、MySQL、BigQuery など、一般的なプラグインの設定例も示します。
目次
- 背景: Trino Connector フレームワークを使用する場面
- ステップ 1 - Connector プラグインのコンパイル: Kafka を例に説明
- ステップ 2 - FE / BE の設定: プラグインディレクトリと遅延読み込みの動作
- ステップ 3 - Catalog の作成と使用:
CREATE CATALOGとプロパティの対応関係 - 一般的な Connector の設定例: Hive / MySQL / Kafka / BigQuery
- FAQ とよくあるエラー
背景
Doris はバージョン 3.0 以降、Trino Connector プラグインとの統合をサポートしています。Trino Connector プラグインの豊富なエコシステムと Doris の trino-connector Catalog 機能により、Doris はより多くのデータソースに接続できます。
| 利用場面 | 推奨する方法 |
|---|---|
| Hive、Iceberg、Hudi、Paimon、JDBC などの主要なデータソース | パフォーマンス、安定性、互換性に優れる Doris の組み込み Catalogを優先して使用する |
| Doris がまだ統合していないその他のデータソース | Trino Connector 互換フレームワークを使用して、より多くのデータソースにすばやく接続する |
注: Trino は Apache License 2.0 に基づくオープンソースソフトウェアで、Trino Software Foundation が提供しています。詳しくは Trino 公式サイトを参照してください。
ステップ 1 - Connector プラグインのコンパイル
Trino はコンパイル済みの公式 Connector プラグインを提供していないため、必要な Connector プラグインを自分でコンパイルする必要があります。
注: Doris は現在バージョン 435 の
trino-mainパッケージを使用しているため、Connector プラグインもバージョン 435 をコンパイルすることを推奨します。別のバージョンの Connector プラグインでは、互換性の問題が発生する可能性があります。問題が発生した場合は、Apache Doris コミュニティに報告してください。
Kafka プラグインを例に説明します。
# 1. Clone the Trino source code
git clone https://github.com/trinodb/trino.git
# 2. Check out version 435
git checkout 435
# 3. Enter the Kafka plugin source directory
cd trino/plugin/trino-kafka
# 4. Compile the Kafka plugin
mvn clean install -DskipTests
コンパイル後、target/trino-kafka-435 ディレクトリが trino/plugin/trino-kafka/ の下に生成されます。
注: 各 Connector プラグインは単一の jar ファイルではなく、サブディレクトリです。
ステップ 2 - FE / BE の設定
Kafka Connector プラグインを用意したら、Doris がプラグインを見つけられるように、fe.conf と be.conf でプラグインディレクトリを設定する必要があります。
前のステップで用意した trino-kafka-435 ディレクトリを /path/to/connectors の下に配置した場合は、次のように設定します。
| ファイル | 設定項目 | デフォルト値 |
|---|---|---|
fe.conf | trino_connector_plugin_dir=/path/to/connectors | ${Doris_HOME}/fe/connectors |
be.conf | trino_connector_plugin_dir=/path/to/connectors | ${Doris_HOME}/be/connectors |
遅延読み込みの動作: Doris は Trino Connector プラグインを遅延読み込みします。
trino-connectorCatalog 機能を初めて使用するときに、FE / BE ノードを再起動する必要はありません。Doris がプラグインを自動的に読み込みます。ただし、プラグインの読み込みは一度だけ行われるため、プラグインディレクトリの内容を変更した後は、その変更を反映するために FE / BE ノードを再起動する必要があります。
ステップ 3 - Catalog の作成と使用
3.1 Trino-Connector Catalog の作成
create catalog kafka_tpch properties (
"type"="trino-connector",
-- The following four properties come from Trino and match the properties in Trino's etc/catalog/kafka.properties, but each must be prefixed with "trino."
"trino.connector.name"="kafka",
"trino.kafka.table-names"="tpch.customer,tpch.orders,tpch.lineitem,tpch.part,tpch.partsupp,tpch.supplier,tpch.nation,tpch.region",
"trino.kafka.nodes"="localhost:9092",
"trino.kafka.table-description-dir" = "/mnt/datadisk1/fangtiewei"
);
プロパティの説明:
| プロパティ | 説明 |
|---|---|
type | Catalog の種類。trino-connector に設定する必要があります |
trino.connector.name | Trino Connector の名前。例: kafka |
trino.kafka.table-names など | これらのプロパティは Trino 由来で、すべてに trino. プレフィックスを付けます。Kafka Connectorを参照してください |
必要なプロパティは Connector プラグインによって異なります。Trino の公式ドキュメント「コネクタ一覧」を参照してください。
3.2 Catalog の使用
Trino-Connector Catalog を作成した後は、ほかの Catalog と同じように使用できます。switch kafka_tpch で Catalog を切り替え、対応するデータソースのデータをクエリします。
switch kafka_tpch;
show databases;
select * from tpch.customer limit 10;
一般的な Connector の設定例
Hive
create catalog emr_hive properties (
"type"="trino-connector",
"trino.connector.name"="hive",
"trino.hive.metastore.uri"="thrift://ip:port",
"trino.hive.config.resources"="/path/to/core-site.xml,/path/to/hdfs-site.xml"
);
Hive プラグインに関する注意事項:
- JVM パラメータに Hadoop ユーザー
-DHADOOP_USER_NAME=userを追加する必要があります。これはJAVA_OPTS_FOR_JDK_17パラメータに追加できます。たとえば、fe.conf/be.confでJAVA_OPTS_FOR_JDK_17="...-DHADOOP_USER_NAME=user"と設定します。
MySQL
create catalog trino_mysql properties (
"type"="trino-connector",
"trino.connector.name"="mysql",
"trino.connection-url" = "jdbc:mysql://ip:port",
"trino.connection-user" = "user",
"trino.connection-password" = "password"
);
MySQL プラグインに関する注意事項:
Unknown or incorrect time zone: 'Asia/Shanghai'というエラーが表示された場合は、JVM 起動パラメータに-Duser.timezone=Etc/GMT-8を追加します。JAVA_OPTS_FOR_JDK_17パラメータ(fe.conf/be.conf内)の末尾に追加できます。
Kafka
create catalog kafka properties (
"type"="trino-connector",
"trino.connector.name"="kafka",
"trino.kafka.nodes"="localhost:9092",
"trino.kafka.table-description-supplier"="CONFLUENT",
"trino.kafka.confluent-schema-registry-url"="http://localhost:8081",
"trino.kafka.hide-internal-columns" = "false"
);
BigQuery
create catalog bigquery_catalog properties (
"type"="trino-connector",
"trino.connector.name"="bigquery",
"trino.bigquery.project-id"="steam-circlet-388406",
"trino.bigquery.credentials-file"="/path/to/application_default_credentials.json"
);
FAQ とよくあるエラー
Q: /path/to/connectors の下のプラグインを変更しましたが、Doris に変更が反映されないのはなぜですか?
A: Doris は遅延読み込みを使用しますが、プラグインの読み込みは一度だけ行われます。プラグインを変更した後は、FE / BE ノードを再起動する必要があります。
Q: 起動時にプラグインのバージョンに互換性がないというエラーが報告される場合は?
A: コンパイル時に Trino の 435 ブランチをチェックアウトしたか確認してください。Doris は現在バージョン 435 の trino-main を使用しており、ほかのバージョンでは互換性の問題が発生する可能性があります。
Q: Hive プラグインでのクエリ時に権限エラーが報告される、または HDFS にアクセスできない場合は?
A: JAVA_OPTS_FOR_JDK_17 に -DHADOOP_USER_NAME=user が設定されているか、core-site.xml / hdfs-site.xml ファイル(trino.hive.config.resources で参照)が読み取れるか確認してください。
Q: MySQL プラグインで Unknown or incorrect time zone: 'Asia/Shanghai' が報告される場合は?
A: -Duser.timezone=Etc/GMT-8 を JAVA_OPTS_FOR_JDK_17 に追加してください。
Q: Hive、Iceberg、Hudi などのデータソースには Trino Connector を使用すべきですか?
A: 推奨しません。これらのデータソースには、Doris の組み込み Catalog の方がパフォーマンス、安定性、互換性に優れています。Trino Connector フレームワークは、Doris がまだ統合していないデータソースを補うためのものです。