メインコンテンツまでスキップ
に最終更新

Trino Connector 統合開発者ガイド

この文書は、Trino Connector プラグインを Apache Doris と統合する開発者向けです。Connector プラグインのコンパイル、FE / BE の設定、trino-connector Catalog の作成と使用について説明します。Kafka Connector を主な例として使用し、Hive、MySQL、BigQuery など、一般的なプラグインの設定例も示します。

目次​


背景​

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.conftrino_connector_plugin_dir=/path/to/connectors${Doris_HOME}/fe/connectors
be.conftrino_connector_plugin_dir=/path/to/connectors${Doris_HOME}/be/connectors

遅延読み込みの動作: Doris は Trino Connector プラグインを遅延読み込みします。trino-connector Catalog 機能を初めて使用するときに、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"
);

プロパティの説明:

プロパティ説明
typeCatalog の種類。trino-connector に設定する必要があります
trino.connector.nameTrino 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 がまだ統合していないデータソースを補うためのものです。