メインコンテンツまでスキップ
バージョン: 2.1

Hive/IcebergでのTPC-H生成

DorisはTrino Connector互換フレームワークを使用して、TPCH ConnectorでTPCHテストセットを迅速に構築することをサポートしています。

Hive/IcebergTableのデータ書き戻し機能と組み合わせることで、Doris経由でDoris、Hive、IcebergTableのTPCHテストデータセットを迅速に構築できます。

このドキュメントでは、主にTPCH Connectorのデプロイ方法とテストデータセット構築での使用方法について説明します。

ヒント

この機能はDorisバージョン3.0.0以降でサポートされています。

TPCH Connectorのコンパイル

JDKバージョン17が必要です。

git clone https://github.com/trinodb/trino.git
git checkout 435
cd trino/plugin/trino-tpch
mvn clean install -DskipTest

コンパイル後、trino/plugin/trino-tpch/target/ の下に trino-tpch-435/ ディレクトリが生成されます。

また、事前にコンパイル済みの trino-tpch-435.tar.gz を直接ダウンロードして展開することも可能です。

TPCH Connectorのデプロイ

すべてのFEおよびBEデプロイメントパスの connectors/ ディレクトリに trino-tpch-435/ ディレクトリを配置してください。(存在しない場合は手動で作成できます)。

├── bin
├── conf
├── connectors
│   ├── trino-tpch-435
...

デプロイメント後、Connectorが正しく読み込まれることを確実にするため、FEおよびBEノードを再起動することを推奨します。

TPCH Catalogの作成

CREATE CATALOG `tpch` PROPERTIES (
"type" = "trino-connector",
"trino.connector.name" = "tpch",
"trino.tpch.column-naming" = "STANDARD",
"trino.tpch.splits-per-node" = "32"
);

tpch.splits-per-nodeは並行数で、最適な並行性を実現するためにBEマシンあたりのコア数の2倍に設定することが推奨されています。これによりデータ生成効率が向上します。

"tpch.column-naming" = "STANDARD"の場合、TPCHTableの列名はl_orderkeyのようにTable名の略称で始まり、そうでなければorderkeyになります。

TPCH Catalogの使用

TPCH Catalogには異なるScale Factorの事前設定されたTPCHデータセットがあり、SHOW DATABASESおよびSHOW TABLESコマンドを使用して確認できます。

mysql> SWITCH tpch;
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| sf1 |
| sf100 |
| sf1000 |
| sf10000 |
| sf100000 |
| sf300 |
| sf3000 |
| sf30000 |
| tiny |
+--------------------+

mysql> USE sf1;
mysql> SHOW TABLES;
+---------------+
| Tables_in_sf1 |
+---------------+
| customer |
| lineitem |
| nation |
| orders |
| part |
| partsupp |
| region |
| supplier |
+---------------+

これらのTableはSELECT文を使用して直接クエリできます。

ヒント

これらの事前設定済みデータセットのデータは実際には保存されておらず、クエリ実行時にリアルタイムで生成されます。そのため、これらの事前設定済みデータセットは直接的なBenchmarkテストには適していません。INSERT INTO SELECTを通じてこれらのデータセットを他のターゲットTable(Doris内部Table、Hive、Iceberg、およびDorisが書き込みをサポートするその他すべてのデータソース)に書き込み、その後ターゲットTableでパフォーマンステストを実行するのに適しています。

TPCHテストデータセットの構築

以下の例では、CTAS文を使用してHive上でTPCHテストデータセットを素早く構築します:

CREATE TABLE hive.tpch100.customer PROPERTIES("file_format" = "parquet") AS SELECT * FROM tpch.sf100.customer  ;
CREATE TABLE hive.tpch100.lineitem PROPERTIES("file_format" = "parquet") AS SELECT * FROM tpch.sf100.lineitem ;
CREATE TABLE hive.tpch100.nation PROPERTIES("file_format" = "parquet") AS SELECT * FROM tpch.sf100.nation ;
CREATE TABLE hive.tpch100.orders PROPERTIES("file_format" = "parquet") AS SELECT * FROM tpch.sf100.orders ;
CREATE TABLE hive.tpch100.part PROPERTIES("file_format" = "parquet") AS SELECT * FROM tpch.sf100.part ;
CREATE TABLE hive.tpch100.partsupp PROPERTIES("file_format" = "parquet") AS SELECT * FROM tpch.sf100.partsupp ;
CREATE TABLE hive.tpch100.region PROPERTIES("file_format" = "parquet") AS SELECT * FROM tpch.sf100.region ;
CREATE TABLE hive.tpch100.supplier PROPERTIES("file_format" = "parquet") AS SELECT * FROM tpch.sf100.supplier ;
ヒント

3台の16C BEノードを持つDorisクラスターにおいて、TPCH 1000 Hiveデータセットの作成には約25分かかり、TPCH 10000の場合は約4~5時間かかります。