Delta Lake カタログ
Delta Lake CatalogはTrino Connector互換性フレームワークを使用して、Delta Lake Connectorを通じてDelta LakeTableにアクセスします。
この機能は実験的であり、バージョン3.0.1以降でサポートされています。
適用シナリオ
| シナリオ | 説明 |
|---|---|
| データ統合 | Delta Lakeデータを読み取り、Doris内部Tableに書き込みます。 |
| データライトバック | サポートされていません。 |
環境準備
Delta Lake Connectorプラグインのコンパイル
JDK 17が必要です。
$ git clone https://github.com/apache/doris-thirdparty.git
$ cd doris-thirdparty
$ git checkout trino-435
$ cd plugin/trino-delta-lake
$ mvn clean install -DskipTest
$ cd ../../lib/trino-hdfs
$ mvn clean install -DskipTest
コンパイル後、trino/plugin/trino-delta-lake/target/の下にtrino-delta-lake-435ディレクトリが、trino/lib/trino-hdfs/target/の下にhdfsディレクトリが作成されます。
また、コンパイル済みのtrino-delta-lake-435-20240724.tar.gzとhdfs.tar.gzを直接ダウンロードして展開することもできます。
Delta Lake Connectorのデプロイ
すべてのFEとBEのデプロイメントパスのconnectors/ディレクトリにtrino-delta-lake-435/ディレクトリを配置し(存在しない場合は手動で作成できます)、hdfs.tar.gzをtrino-delta-lake-435/ディレクトリ内に展開します。
├── bin
├── conf
├── connectors
│ ├── trino-delta-lake-435
│ │ ├── hdfs
...
デプロイ後、Connectorが正しく読み込まれることを確実にするため、FEおよびBEノードの再起動を推奨します。
Catalogの設定
構文
CREATE CATALOG [IF NOT EXISTS] catalog_name
PROPERTIES (
'type' = 'trino-connector', -- required
'trino.connector.name' = 'delta_lake', -- required
{TrinoProperties},
{CommonProperties}
);
-
{TrinoProperties}TrinoPropertiesセクションは、Trino Connectorに渡されるプロパティを指定するために使用されます。これらのプロパティは
trino.プレフィックスを使用します。理論的には、Trinoでサポートされているすべてのプロパティがここでもサポートされています。Delta Lakeの詳細については、Trino ドキュメントを参照してください。 -
[CommonProperties]CommonPropertiesセクションは、一般的なプロパティを指定するために使用されます。"Common Properties"セクションのカタログ 概要を参照してください。
サポートされているDelta Lakeバージョン
Delta Lakeの詳細については、Trino ドキュメントを参照してください。
サポートされているMetadata Services
Delta Lakeの詳細については、Trino ドキュメントを参照してください。
サポートされているStorage システム
Delta Lakeの詳細については、Trino ドキュメントを参照してください。
カラム型マッピング
| Delta Lake タイプ | Trino タイプ | Doris タイプ | Comment |
|---|---|---|---|
| boolean | boolean | boolean | |
| int | int | int | |
| byte | tinyint | tinyint | |
| short | smallint | smallint | |
| long | bigint | bigint | |
| float | real | float | |
| double | double | double | |
| decimal(P, S) | decimal(P, S) | decimal(P, S) | |
| string | varchar | string | |
| bianry | varbinary | string | |
| date | date | date | |
| timestamp_ntz | timestamp(N) | datetime(N) | |
| timestamp | timestamp with time zone(N) | datetime(N) | |
| array | array | array | |
| map | map | map | |
| struct | row | struct |
例
CREATE CATALOG delta_lake_hms properties (
'type' = 'trino-connector',
'trino.connector.name' = 'delta_lake',
'trino.hive.metastore' = 'thrift',
'trino.hive.metastore.uri'= 'thrift://ip:port',
'trino.hive.config.resources'='/path/to/core-site.xml,/path/to/hdfs-site.xml'
);
Query 運用
Catalogを設定した後、以下の方法でCatalog内のTableデータをクエリできます:
-- 1. Switch to the catalog, use the database, and query
SWITCH delta_lake_ctl;
USE delta_lake_db;
SELECT * FROM delta_lake_tbl LIMIT 10;
-- 2. Use the Delta Lake database directly
USE delta_lake_ctl.delta_lake_db;
SELECT * FROM delta_lake_tbl LIMIT 10;
-- 3. Use the fully qualified name to query
SELECT * FROM delta_lake_ctl.delta_lake_db.delta_lake_tbl LIMIT 10;