使用须知
TPCH Catalog 通过 Trino Connector 兼容框架,使用 TPCH Connector 来快速构建 TPCH 测试集。
提示
该功能自 Doris 3.0.0 版本开始支持。
编译 TPCH Connector
需要 JDK 17 版本。
1. git clone https://github.com/trinodb/trino.git
2. git checkout 435
3. cd trino/plugin/trino-tpch
4. mvn clean install -DskipTest
完成编译后,会在 trino/plugin/trino-tpch/target/ 下得到 trino-tpch-435/ 目录。
也可以直接下载预编译的 trino-tpch-435.tar.gz 并解压。
部署 TPCH Connector
将 trino-tpch-435/ 目录放到所有 FE 和 BE 部署路径的 connectors/ 目录下。(如果没有,可以手动创建)。
1. ├── bin
2. ├── conf
3. ├── connectors
4. │ ├── trino-tpch-435
5. ...
部署完成后,建议重启 FE、BE 节点以确保 Connector 可以被正确加载。
创建 TPCH Catalog
1. CREATE CATALOG `tpch` PROPERTIES (
2. "type" = "trino-connector",
3. "trino.connector.name" = "tpch",
4. "trino.tpch.column-naming" = "STANDARD",
5. "trino.tpch.splits-per-node" = "32"
6. );
其中 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 命令查看。
1. mysql> SWITCH tpch;
2. Query OK, 0 rows affected (0.00 sec)
4. mysql> SHOW DATABASES;
5. +--------------------+
6. | Database |
7. +--------------------+
8. | information_schema |
9. | mysql |
10. | sf1 |
11. | sf100 |
12. | sf1000 |
13. | sf10000 |
14. | sf100000 |
15. | sf300 |
16. | sf3000 |
17. | sf30000 |
18. | tiny |
19. +--------------------+
20. 11 rows in set (0.00 sec)
22. mysql> USE sf1;
23. mysql> SHOW TABLES;
24. +---------------+
25. | Tables_in_sf1 |
26. +---------------+
27. | customer |
28. | lineitem |
29. | nation |
30. | orders |
31. | part |
32. | partsupp |
33. | region |
34. | supplier |
35. +---------------+
36. 8 rows in set (0.00 sec)
通过 SELECT 语句可以直接查询这些表。
提示
这些预制数据集的数据,并没有实际存储,而是在查询时实时生成的。所以这些预制数据集不适合用来直接进行 Benchmark 测试。适用于通过 INSERT INTO SELECT 将数据集写入到其他目的表(如 Doris 内表、Hive、Iceberg 等所有 Doris 支持写入的数据源)后,对目的表进行性能测试。
最佳实践
快速构建 TPCH 测试数据集
可以通过 CTAS 语句快速构建一个 TPCH 测试数据集:
1. CREATE TABLE hive.tpch100.customer PROPERTIES("file_format" = "parquet") AS SELECT * FROM tpch.sf100.customer ;
2. CREATE TABLE hive.tpch100.lineitem PROPERTIES("file_format" = "parquet") AS SELECT * FROM tpch.sf100.lineitem ;
3. CREATE TABLE hive.tpch100.nation PROPERTIES("file_format" = "parquet") AS SELECT * FROM tpch.sf100.nation ;
4. CREATE TABLE hive.tpch100.orders PROPERTIES("file_format" = "parquet") AS SELECT * FROM tpch.sf100.orders ;
5. CREATE TABLE hive.tpch100.part PROPERTIES("file_format" = "parquet") AS SELECT * FROM tpch.sf100.part ;
6. CREATE TABLE hive.tpch100.partsupp PROPERTIES("file_format" = "parquet") AS SELECT * FROM tpch.sf100.partsupp ;
7. CREATE TABLE hive.tpch100.region PROPERTIES("file_format" = "parquet") AS SELECT * FROM tpch.sf100.region ;
8. 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 个小时。
