본문으로 건너뛰기
최종 수정: 에

Hive/Iceberg에서 TPC-DS 생성하기

Doris에서는 TPCDS Connector를 사용하여 Trino Connector 호환 프레임워크를 통해 TPCDS 테스트 데이터 세트를 빠르게 구축할 수 있습니다.

Hive/Iceberg 테이블의 데이터 쓰기 기능을 함께 활용하면 Doris를 통해 Doris, Hive, Iceberg 테이블에 TPCDS 테스트 데이터 세트를 빠르게 구축할 수 있습니다.

이 문서에서는 TPCDS Connector를 배포하고 사용하여 테스트 데이터 세트를 구축하는 방법을 주로 설명합니다.

팁

이 기능은 Doris 버전 3.0.0부터 지원됩니다.

TPCDS Connector 컴파일​

JDK 버전 17이 필요합니다.

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

컴파일이 완료되면 trino-tpcds-435/ 디렉터리가 trino/plugin/trino-tpcds/target/ 아래에 생성됩니다.

미리 컴파일된 trino-tpcds-435.tar.gz를 직접 다운로드하여 압축을 풀어도 됩니다.

TPCDS Connector 배포​

모든 FE 및 BE 배포 경로의 trino-tpcds-435/ 디렉터리를 connectors/ 디렉터리 아래에 배치합니다. (해당 디렉터리가 없으면 직접 생성할 수 있습니다.)

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

배포 후에는 Connector를 올바르게 불러올 수 있도록 FE 및 BE 노드를 다시 시작하는 것이 좋습니다.

TPCDS Catalog 생성​

CREATE CATALOG `tpcds` PROPERTIES (
"type" = "trino-connector",
"trino.connector.name" = "tpcds",
"trino.tpcds.split-count" = "32"
);

tpcds.split-count는 동시 실행 수를 지정합니다. 최적의 동시성을 확보하고 데이터 생성 효율을 높이려면 BE 머신당 코어 수의 2배로 설정하는 것이 좋습니다.

TPCDS Catalog 사용​

TPCDS Catalog에는 다양한 Scale Factor의 TPCDS 데이터 세트가 미리 구성되어 있으며, SHOW DATABASES 및 SHOW TABLES 명령으로 확인할 수 있습니다.

mysql> SWITCH tpcds;
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 |
+------------------------+
| call_center |
| catalog_page |
| catalog_returns |
| catalog_sales |
| customer |
| customer_address |
| customer_demographics |
| date_dim |
| dbgen_version |
| household_demographics |
| income_band |
| inventory |
| item |
| promotion |
| reason |
| ship_mode |
| store |
| store_returns |
| store_sales |
| time_dim |
| warehouse |
| web_page |
| web_returns |
| web_sales |
| web_site |
+------------------------+

SELECT 문을 사용하여 이러한 테이블을 직접 쿼리할 수 있습니다.

팁

미리 구성된 이 데이터 세트의 데이터는 실제로 저장되어 있지 않으며 쿼리 시 실시간으로 생성됩니다. 따라서 이 데이터 세트를 직접 Benchmark 테스트에 사용하는 것은 적합하지 않습니다. INSERT INTO SELECT를 통해 다른 대상 테이블(Doris 내부 테이블, Hive, Iceberg 및 Doris가 쓰기를 지원하는 기타 데이터 소스)에 데이터 세트를 기록한 다음, 대상 테이블에서 성능 테스트를 수행하는 용도로 적합합니다.

TPCDS 테스트 데이터 세트 구축​

다음 예제에서는 CTAS 문을 사용하여 Hive에 TPCDS 테스트 데이터 세트를 빠르게 구축합니다.

CREATE TABLE hive.tpcds100.call_center            PROPERTIES("file_format" = "parquet") AS SELECT * FROM tpcds.sf100.call_center           ;
CREATE TABLE hive.tpcds100.catalog_page PROPERTIES("file_format" = "parquet") AS SELECT * FROM tpcds.sf100.catalog_page ;
CREATE TABLE hive.tpcds100.catalog_returns PROPERTIES("file_format" = "parquet") AS SELECT * FROM tpcds.sf100.catalog_returns ;
CREATE TABLE hive.tpcds100.catalog_sales PROPERTIES("file_format" = "parquet") AS SELECT * FROM tpcds.sf100.catalog_sales ;
CREATE TABLE hive.tpcds100.customer PROPERTIES("file_format" = "parquet") AS SELECT * FROM tpcds.sf100.customer ;
CREATE TABLE hive.tpcds100.customer_address PROPERTIES("file_format" = "parquet") AS SELECT * FROM tpcds.sf100.customer_address ;
CREATE TABLE hive.tpcds100.customer_demographics PROPERTIES("file_format" = "parquet") AS SELECT * FROM tpcds.sf100.customer_demographics ;
CREATE TABLE hive.tpcds100.date_dim PROPERTIES("file_format" = "parquet") AS SELECT * FROM tpcds.sf100.date_dim ;
CREATE TABLE hive.tpcds100.dbgen_version PROPERTIES("file_format" = "parquet") AS SELECT * FROM tpcds.sf100.dbgen_version ;
CREATE TABLE hive.tpcds100.household_demographics PROPERTIES("file_format" = "parquet") AS SELECT * FROM tpcds.sf100.household_demographics;
CREATE TABLE hive.tpcds100.income_band PROPERTIES("file_format" = "parquet") AS SELECT * FROM tpcds.sf100.income_band ;
CREATE TABLE hive.tpcds100.inventory PROPERTIES("file_format" = "parquet") AS SELECT * FROM tpcds.sf100.inventory ;
CREATE TABLE hive.tpcds100.item PROPERTIES("file_format" = "parquet") AS SELECT * FROM tpcds.sf100.item ;
CREATE TABLE hive.tpcds100.promotion PROPERTIES("file_format" = "parquet") AS SELECT * FROM tpcds.sf100.promotion ;
CREATE TABLE hive.tpcds100.reason PROPERTIES("file_format" = "parquet") AS SELECT * FROM tpcds.sf100.reason ;
CREATE TABLE hive.tpcds100.ship_mode PROPERTIES("file_format" = "parquet") AS SELECT * FROM tpcds.sf100.ship_mode ;
CREATE TABLE hive.tpcds100.store PROPERTIES("file_format" = "parquet") AS SELECT * FROM tpcds.sf100.store ;
CREATE TABLE hive.tpcds100.store_returns PROPERTIES("file_format" = "parquet") AS SELECT * FROM tpcds.sf100.store_returns ;
CREATE TABLE hive.tpcds100.store_sales PROPERTIES("file_format" = "parquet") AS SELECT * FROM tpcds.sf100.store_sales ;
CREATE TABLE hive.tpcds100.time_dim PROPERTIES("file_format" = "parquet") AS SELECT * FROM tpcds.sf100.time_dim ;
CREATE TABLE hive.tpcds100.warehouse PROPERTIES("file_format" = "parquet") AS SELECT * FROM tpcds.sf100.warehouse ;
CREATE TABLE hive.tpcds100.web_page PROPERTIES("file_format" = "parquet") AS SELECT * FROM tpcds.sf100.web_page ;
CREATE TABLE hive.tpcds100.web_returns PROPERTIES("file_format" = "parquet") AS SELECT * FROM tpcds.sf100.web_returns ;
CREATE TABLE hive.tpcds100.web_sales PROPERTIES("file_format" = "parquet") AS SELECT * FROM tpcds.sf100.web_sales ;
CREATE TABLE hive.tpcds100.web_site PROPERTIES("file_format" = "parquet") AS SELECT * FROM tpcds.sf100.web_site ;
팁

16C BE 노드 3개로 구성된 Doris 클러스터에서 TPCDS 1000 Hive 데이터 세트를 생성하는 데 약 3~4시간이 걸립니다.