Hive/IcebergでのTPC-H生成
DorisはTrino Connectorと互換性のあるフレームワークを使用してTPCH Connectorで迅速にTPCHテストセットを構築することをサポートしています。
Hive/Icebergテーブルのデータ書き戻し機能と組み合わせることで、Doris経由でDoris、Hive、Icebergテーブル用の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 -DskipTests
コンパイル後、trino/plugin/trino-tpch/target/の下にtrino-tpch-435/ディレクトリが作成されます。
また、プリコンパイル済みのtrino-tpch-435.tar.gzを直接ダウンロードして展開することも可能です。
TPCHコネクタのデプロイ
すべての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" の場合、TPCH テーブルの列名は l_orderkey のようにテーブル名の略語で始まり、そうでなければ 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 |
+---------------+
SELECT文を使用してこれらのテーブルを直接クエリできます。
これらの事前設定されたデータセットのデータは実際には保存されておらず、クエリ実行時にリアルタイムで生成されます。そのため、これらの事前設定されたデータセットは直接のBenchmarkテストには適していません。INSERT INTO SELECTを通じて他のターゲットテーブル(Doris内部テーブル、Hive、Iceberg、およびDorisが書き込みをサポートするその他すべてのデータソース)にデータセットを書き込み、その後ターゲットテーブルでパフォーマンステストを実行するのに適しています。
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時間かかります。