This is an automated email from the ASF dual-hosted git repository.
zykkk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new a6ff87f32c [docker](trino) add Trino docker compose and hive catalog
(#21086)
a6ff87f32c is described below
commit a6ff87f32c4bf08d8c12078b2f157a0b72a3cc61
Author: bingquanzhao <[email protected]>
AuthorDate: Wed Jun 28 11:04:41 2023 +0800
[docker](trino) add Trino docker compose and hive catalog (#21086)
---
.../docker-compose/trino/gen_env.sh.tpl | 39 ++++
.../docker-compose/trino/hive.properties.tpl | 19 ++
.../trino/scripts/create_trino_table.sql | 222 +++++++++++++++++++++
.../docker-compose/trino/trino_hive.env.tpl | 53 +++++
.../docker-compose/trino/trino_hive.yaml.tpl | 141 +++++++++++++
docker/thirdparties/run-thirdparties-docker.sh | 87 +++++++-
.../developer-guide/regression-testing.md | 16 +-
7 files changed, 573 insertions(+), 4 deletions(-)
diff --git a/docker/thirdparties/docker-compose/trino/gen_env.sh.tpl
b/docker/thirdparties/docker-compose/trino/gen_env.sh.tpl
new file mode 100644
index 0000000000..dc1357540a
--- /dev/null
+++ b/docker/thirdparties/docker-compose/trino/gen_env.sh.tpl
@@ -0,0 +1,39 @@
+#!/bin/bash
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+####################################################################
+# This script will generate hadoop-hive.env from hadoop-hive.env.tpl
+####################################################################
+
+set -eo pipefail
+
+ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)"
+
+FS_PORT=8120
+HMS_PORT=9183
+
+# Need to set hostname of container to same as host machine's.
+# Otherwise, the doris process can not connect to namenode directly.
+HOST_NAME="doris--"
+
+{
+ echo "FS_PORT=${FS_PORT}"
+ echo "HMS_PORT=${HMS_PORT}"
+ echo "CORE_CONF_fs_defaultFS=hdfs://doris--namenode:${FS_PORT}"
+ echo "HOST_NAME=${HOST_NAME}"
+} >>"${ROOT}"/trino_hive.env
diff --git a/docker/thirdparties/docker-compose/trino/hive.properties.tpl
b/docker/thirdparties/docker-compose/trino/hive.properties.tpl
new file mode 100644
index 0000000000..4f11682864
--- /dev/null
+++ b/docker/thirdparties/docker-compose/trino/hive.properties.tpl
@@ -0,0 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+connector.name=hive
+hive.metastore.uri=thrift://metastore_ip:9083
diff --git
a/docker/thirdparties/docker-compose/trino/scripts/create_trino_table.sql
b/docker/thirdparties/docker-compose/trino/scripts/create_trino_table.sql
new file mode 100644
index 0000000000..ea9749f18a
--- /dev/null
+++ b/docker/thirdparties/docker-compose/trino/scripts/create_trino_table.sql
@@ -0,0 +1,222 @@
+-- Licensed to the Apache Software Foundation (ASF) under one
+-- or more contributor license agreements. See the NOTICE file
+-- distributed with this work for additional information
+-- regarding copyright ownership. The ASF licenses this file
+-- to you under the Apache License, Version 2.0 (the
+-- "License"); you may not use this file except in compliance
+-- with the License. You may obtain a copy of the License at
+--
+-- http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing,
+-- software distributed under the License is distributed on an
+-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+-- KIND, either express or implied. See the License for the
+-- specific language governing permissions and limitations
+-- under the License.
+
+create schema hive.doris_test;
+create table hive.doris_test.orc_basic_data_type
+(
+ T_BOOLEAN BOOLEAN,
+ T_TINYINT TINYINT,
+ T_SMALLINT SMALLINT,
+ T_INTEGER INTEGER,
+ T_BIGINT BIGINT,
+ T_REAL REAL,
+ T_DOUBLE DOUBLE,
+ T_DECIMAL DECIMAL(38,12),
+ T_CHAR CHAR,
+ T_VARCHAR VARCHAR,
+ T_DATE DATE,
+ T_TIMESTAMP TIMESTAMP
+) WITH (format = 'ORC');
+
+create table hive.doris_test.parquet_basic_data_type
+(
+ T_BOOLEAN BOOLEAN,
+ T_TINYINT TINYINT,
+ T_SMALLINT SMALLINT,
+ T_INTEGER INTEGER,
+ T_BIGINT BIGINT,
+ T_REAL REAL,
+ T_DOUBLE DOUBLE,
+ T_DECIMAL DECIMAL(38,12),
+ T_CHAR CHAR,
+ T_VARCHAR VARCHAR,
+ T_DATE DATE,
+ T_TIMESTAMP TIMESTAMP
+) WITH (format = 'PARQUET');
+
+
+insert into hive.doris_test.orc_basic_data_type
+values (true, tinyint '1', smallint '1', integer '126', bigint '123456789',
real '12.34', double '12.3456', decimal
+ '12.3456789', char 'A', varchar 'Beijing,Shanghai', date '2023-05-23',
timestamp '2023-05-24 12:00:00.123'),
+ (false, tinyint '1', smallint '1', integer '126', bigint
'1234567890123456', real '12.34', double '12.3456', decimal
+ '12.345678901', char 'A', varchar 'Beijing,Shanghai', date
'2023-05-24', timestamp '2023-05-24 13:00:00.123'),
+ (false, tinyint '1', smallint '1', integer '126', bigint
'123456789012345678', real '12', double '10', decimal
+ '12.3456789012', char 'A', varchar 'Beijing,Shanghai', date
'2023-05-25', timestamp '2023-05-24 13:00:00.123'),
+ (null, null, null, null, null, null, null, null, null, null, null,
null);
+
+insert into hive.doris_test.parquet_basic_data_type
+select *
+from hive.doris_test.orc_basic_data_type;
+
+
+CREATE TABLE hive.doris_test.orc_array_data_type
+(
+ t_int_array array(integer),
+ t_tinyint_array array(tinyint),
+ t_smallint_array array(smallint),
+ t_bigint_array array(bigint),
+ t_real_array array(real),
+ t_double_array array(double),
+ t_string_array array(varchar),
+ t_boolean_array array(boolean),
+ t_timestamp_array array(timestamp (3)),
+ t_date_array array(date),
+ t_decimal_array array(decimal (38, 12))
+)
+ WITH (
+ format = 'ORC'
+ );
+
+CREATE TABLE hive.doris_test.parquet_array_data_type
+(
+ t_int_array array( integer),
+ t_tinyint_array array(tinyint),
+ t_smallint_array array( smallint),
+ t_bigint_array array(bigint),
+ t_real_array array( real),
+ t_double_array array( double),
+ t_string_array array( varchar),
+ t_boolean_array array(boolean),
+ t_timestamp_array array( timestamp (3)),
+ t_date_array array( date),
+ t_decimal_array array( decimal (38, 12))
+)
+ WITH (
+ format = 'PARQUET'
+ );
+
+insert into hive.doris_test.orc_array_data_type
+values
(ARRAY[1,2,3,4,5,6,7],ARRAY[1,2,3,4,5,6,7],ARRAY[1,2,3,4,5,6,7],ARRAY[1234567890123,12345678901234],
+
ARRAY[45.123,123.45,11.0],ARRAY[45.12344,123.4544,11.0],ARRAY['TEST','TEST#12123123'],ARRAY[TRUE,FALSE,TRUE,FALSE],
+ ARRAY[TIMESTAMP '2023-05-24 13:00:00.123',TIMESTAMP '2023-05-24
14:00:00.123'],
+ ARRAY[DATE '2023-05-24',DATE '2023-05-26'],
+ ARRAY[DECIMAL '10001.11122233344']);
+
+insert into hive.doris_test.parquet_array_data_type select * from
hive.doris_test.orc_array_data_type;
+
+
+create table hive.doris_test.orc_string_complex
+(
+ t_string_array array(varchar),
+ t_string_map map(varchar,varchar),
+ t_string_struct row(f_string varchar,f_int varchar)
+)WITH (
+ FORMAT = 'ORC'
+ );
+
+create table hive.doris_test.parquet_string_complex
+(
+ t_string_array array(varchar),
+ t_string_map map(varchar,varchar),
+ t_string_struct row(f_string varchar,f_int varchar)
+)WITH (
+ FORMAT = 'PARQUET'
+ );
+
+insert into hive.doris_test.orc_string_complex
+values (array['1', '2', '3', '北京', 'beijing'],
+ map(array['1', '2', '3'], array['1', 'beijing', '北京']),
+ row('beijing', '1'));
+
+insert into hive.doris_test.parquet_string_complex
+select *
+from hive.doris_test.orc_string_complex;
+
+CREATE TABLE hive.doris_test.orc_supplier_partitioned
+(
+ suppkey bigint,
+ name varchar(25),
+ address varchar(40),
+ phone varchar(15),
+ acctbal double,
+ comment varchar(101),
+ nationkey bigint
+)
+ WITH (
+ format = 'ORC',
+ partitioned_by = ARRAY['nationkey']
+ );
+
+CREATE TABLE hive.doris_test.parquet_supplier_partitioned
+(
+ suppkey bigint,
+ name varchar(25),
+ address varchar(40),
+ phone varchar(15),
+ acctbal double,
+ comment varchar(101),
+ nationkey bigint
+)
+ WITH (
+ format = 'PARQUET',
+ partitioned_by = ARRAY['nationkey']
+ );
+
+insert into hive.doris_test.orc_supplier_partitioned
+select suppkey, name, address, phone, acctbal, comment, nationkey
+from tpch.sf100.supplier;
+
+insert into hive.doris_test.parquet_supplier_partitioned
+select *
+from hive.doris_test.orc_supplier_partitioned;
+
+-- partition and bucket
+CREATE TABLE hive.doris_test.orc_supplier_partitioned_bucketed
+(
+ suppkey bigint,
+ name varchar(25),
+ address varchar(40),
+ phone varchar(15),
+ acctbal double,
+ comment varchar(101),
+ nationkey bigint
+)
+ WITH (
+ format = 'ORC',
+ partitioned_by = ARRAY['nationkey'],
+ bucketed_by = ARRAY['suppkey'],
+ bucket_count = 10
+ );
+
+CREATE TABLE hive.doris_test.parquet_supplier_partitioned_bucketed
+(
+ suppkey bigint,
+ name varchar(25),
+ address varchar(40),
+ phone varchar(15),
+ acctbal double,
+ comment varchar(101),
+ nationkey bigint
+)
+ WITH (
+ format = 'PARQUET',
+ partitioned_by = ARRAY['nationkey'],
+ bucketed_by = ARRAY['suppkey'],
+ bucket_count = 10
+ );
+
+insert into hive.doris_test.orc_supplier_partitioned_bucketed
+select suppkey, name, address, phone, acctbal, comment, nationkey
+from tpch.sf100.supplier;
+
+insert into hive.doris_test.parquet_supplier_partitioned_bucketed
+select *
+from hive.doris_test.orc_supplier_partitioned_bucketed;
+
+
+
+
diff --git a/docker/thirdparties/docker-compose/trino/trino_hive.env.tpl
b/docker/thirdparties/docker-compose/trino/trino_hive.env.tpl
new file mode 100644
index 0000000000..0f2ce0a443
--- /dev/null
+++ b/docker/thirdparties/docker-compose/trino/trino_hive.env.tpl
@@ -0,0 +1,53 @@
+#!/usr/bin/env bash
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+DOCKER_TRINO_EXTERNAL_PORT=8080
+
+HIVE_SITE_CONF_javax_jdo_option_ConnectionURL=jdbc:postgresql://doris--hive-metastore-postgresql:5432/metastore
+HIVE_SITE_CONF_javax_jdo_option_ConnectionDriverName=org.postgresql.Driver
+HIVE_SITE_CONF_javax_jdo_option_ConnectionUserName=hive
+HIVE_SITE_CONF_javax_jdo_option_ConnectionPassword=hive
+HIVE_SITE_CONF_datanucleus_autoCreateSchema=false
+HIVE_SITE_CONF_hive_metastore_uris=thrift://doris--hive-metastore:9083
+HDFS_CONF_dfs_namenode_datanode_registration_ip___hostname___check=false
+HIVE_SITE_CONF_hive_server2_thrift_bind_host=0.0.0.0
+HIVE_SITE_CONF_hive_server2_thrift_port=10000
+
+CORE_CONF_hadoop_http_staticuser_user=root
+CORE_CONF_hadoop_proxyuser_hue_hosts=*
+CORE_CONF_hadoop_proxyuser_hue_groups=*
+CORE_CONF_hadoop_proxyuser_hive_hosts=*
+
+HDFS_CONF_dfs_webhdfs_enabled=true
+HDFS_CONF_dfs_permissions_enabled=false
+
+YARN_CONF_yarn_log___aggregation___enable=true
+YARN_CONF_yarn_resourcemanager_recovery_enabled=true
+YARN_CONF_yarn_resourcemanager_store_class=org.apache.hadoop.yarn.server.resourcemanager.recovery.FileSystemRMStateStore
+YARN_CONF_yarn_resourcemanager_fs_state___store_uri=/rmstate
+YARN_CONF_yarn_nodemanager_remote___app___log___dir=/app-logs
+YARN_CONF_yarn_log_server_url=http://historyserver:8188/applicationhistory/logs/
+YARN_CONF_yarn_timeline___service_enabled=true
+YARN_CONF_yarn_timeline___service_generic___application___history_enabled=true
+YARN_CONF_yarn_resourcemanager_system___metrics___publisher_enabled=true
+YARN_CONF_yarn_resourcemanager_hostname=resourcemanager
+YARN_CONF_yarn_timeline___service_hostname=historyserver
+YARN_CONF_yarn_resourcemanager_address=resourcemanager:8032
+YARN_CONF_yarn_resourcemanager_scheduler_address=resourcemanager:8030
+YARN_CONF_yarn_resourcemanager_resource__tracker_address=resourcemanager:8031
+
diff --git a/docker/thirdparties/docker-compose/trino/trino_hive.yaml.tpl
b/docker/thirdparties/docker-compose/trino/trino_hive.yaml.tpl
new file mode 100644
index 0000000000..f034a0c7bd
--- /dev/null
+++ b/docker/thirdparties/docker-compose/trino/trino_hive.yaml.tpl
@@ -0,0 +1,141 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+version: "3.8"
+
+networks:
+ doris--network:
+ driver: bridge
+
+services:
+
+ doris--trino:
+ image: trinodb/trino:418
+ hostname: doris--trino
+ container_name: doris--trino
+ env_file:
+ - ./trino_hive.env
+ ports:
+ - "${DOCKER_TRINO_EXTERNAL_PORT}:8080"
+ volumes:
+ - ./scripts:/scripts
+ healthcheck:
+ test: [ "CMD", "curl", "-f", "http://localhost:8080/" ]
+ interval: 5s
+ timeout: 120s
+ retries: 120
+ networks:
+ - doris--network
+
+ doris--namenode:
+ image: bde2020/hadoop-namenode:2.0.0-hadoop2.7.4-java8
+ environment:
+ - CLUSTER_NAME=test
+ env_file:
+ - ./trino_hive.env
+ hostname: doris--namenode
+ container_name: doris--namenode
+ expose:
+ - "50070"
+ - "8020"
+ - "9000"
+ - "${FS_PORT}"
+ ports:
+ - "${FS_PORT}:${FS_PORT}"
+ healthcheck:
+ test: [ "CMD", "curl", "http://localhost:50070/" ]
+ interval: 5s
+ timeout: 120s
+ retries: 120
+ networks:
+ - doris--network
+
+ doris--datanode:
+ image: bde2020/hadoop-datanode:2.0.0-hadoop2.7.4-java8
+ env_file:
+ - ./trino_hive.env
+ environment:
+ SERVICE_PRECONDITION: "doris--namenode:50070"
+ hostname: doris--datanode
+ container_name: doris--datanode
+ expose:
+ - "50075"
+ healthcheck:
+ test: [ "CMD", "curl", "http://localhost:50075" ]
+ interval: 5s
+ timeout: 60s
+ retries: 120
+ networks:
+ - doris--network
+
+ doris--hive-server:
+ image: bde2020/hive:2.3.2-postgresql-metastore
+ env_file:
+ - ./trino_hive.env
+ environment:
+ HIVE_CORE_CONF_javax_jdo_option_ConnectionURL:
"jdbc:postgresql://doris--hive-metastore-postgresql:5432/metastore"
+ SERVICE_PRECONDITION: "doris--hive-metastore:9083"
+ hostname: doris--hive-server
+ container_name: doris--hive-server
+ expose:
+ - "10000"
+ depends_on:
+ - doris--datanode
+ - doris--namenode
+ healthcheck:
+ test: beeline -u "jdbc:hive2://127.0.0.1:10000/default" -n health_check
-e "show databases;"
+ interval: 10s
+ timeout: 120s
+ retries: 120
+ networks:
+ - doris--network
+
+
+ doris--hive-metastore:
+ image: bde2020/hive:2.3.2-postgresql-metastore
+ env_file:
+ - ./trino_hive.env
+ command: /opt/hive/bin/hive --service metastore
+ environment:
+ SERVICE_PRECONDITION: "doris--namenode:50070 doris--datanode:50075
doris--hive-metastore-postgresql:5432"
+ hostname: doris--hive-metastore
+ container_name: doris--hive-metastore
+ expose:
+ - "9083"
+ ports:
+ - "${HMS_PORT}:9083"
+ volumes:
+ - ./scripts:/mnt/scripts
+ depends_on:
+ - doris--hive-metastore-postgresql
+ networks:
+ - doris--network
+
+ doris--hive-metastore-postgresql:
+ image: bde2020/hive-metastore-postgresql:2.3.0
+ restart: always
+ hostname: doris--hive-metastore-postgresql
+ container_name: doris--hive-metastore-postgresql
+ expose:
+ - "5432"
+ healthcheck:
+ test: ["CMD-SHELL", "pg_isready -U postgres"]
+ interval: 5s
+ timeout: 60s
+ retries: 120
+ networks:
+ - doris--network
diff --git a/docker/thirdparties/run-thirdparties-docker.sh
b/docker/thirdparties/run-thirdparties-docker.sh
index 283ed7b35b..5d0821da18 100755
--- a/docker/thirdparties/run-thirdparties-docker.sh
+++ b/docker/thirdparties/run-thirdparties-docker.sh
@@ -37,7 +37,7 @@ Usage: $0 <options>
--stop stop the specified components
All valid components:
- mysql,pg,oracle,sqlserver,clickhouse,es,hive,iceberg,hudi
+ mysql,pg,oracle,sqlserver,clickhouse,es,hive,iceberg,hudi,trino
"
exit 1
}
@@ -60,7 +60,7 @@ STOP=0
if [[ "$#" == 1 ]]; then
# default
- COMPONENTS="mysql,pg,oracle,sqlserver,clickhouse,hive,iceberg,hudi"
+ COMPONENTS="mysql,pg,oracle,sqlserver,clickhouse,hive,iceberg,hudi,trino"
else
while true; do
case "$1" in
@@ -92,7 +92,7 @@ else
done
if [[ "${COMPONENTS}"x == ""x ]]; then
if [[ "${STOP}" -eq 1 ]]; then
- COMPONENTS="mysql,pg,oracle,sqlserver,clickhouse,hive,iceberg,hudi"
+
COMPONENTS="mysql,pg,oracle,sqlserver,clickhouse,hive,iceberg,hudi,trino"
fi
fi
fi
@@ -129,6 +129,8 @@ RUN_HIVE=0
RUN_ES=0
RUN_ICEBERG=0
RUN_HUDI=0
+RUN_TRINO=0
+
for element in "${COMPONENTS_ARR[@]}"; do
if [[ "${element}"x == "mysql"x ]]; then
RUN_MYSQL=1
@@ -148,6 +150,8 @@ for element in "${COMPONENTS_ARR[@]}"; do
RUN_ICEBERG=1
elif [[ "${element}"x == "hudi"x ]]; then
RUN_HUDI=1
+ elif [[ "${element}"x == "trino"x ]];then
+ RUN_TRINO=1
else
echo "Invalid component: ${element}"
usage
@@ -290,3 +294,80 @@ if [[ "${RUN_HUDI}" -eq 1 ]]; then
docker exec -it adhoc-2 /bin/bash
/var/scripts/setup_demo_container_adhoc_2.sh
fi
fi
+
+if [[ "${RUN_TRINO}" -eq 1 ]]; then
+ # trino
+ trino_docker="${ROOT}"/docker-compose/trino
+ TRINO_CONTAINER_ID="${CONTAINER_UID}trino"
+ NAMENODE_CONTAINER_ID="${CONTAINER_UID}namenode"
+ HIVE_METASTORE_CONTAINER_ID=${CONTAINER_UID}hive-metastore
+ for file in trino_hive.yaml trino_hive.env gen_env.sh hive.properties
+ do
+ cp "${trino_docker}/$file.tpl" "${trino_docker}/$file"
+ if [[ $file != "hive.properties" ]]; then
+ sed -i "s/doris--/${CONTAINER_UID}/g" "${trino_docker}/$file"
+ fi
+ done
+
+ bash "${trino_docker}"/gen_env.sh
+ sudo docker compose -f "${trino_docker}"/trino_hive.yaml --env-file
"${trino_docker}"/trino_hive.env down
+ if [[ "${STOP}" -ne 1 ]]; then
+ sudo sed -i "/${NAMENODE_CONTAINER_ID}/d" /etc/hosts
+ sudo docker compose -f "${trino_docker}"/trino_hive.yaml --env-file
"${trino_docker}"/trino_hive.env up --build --remove-orphans -d
+ sudo echo "127.0.0.1 ${NAMENODE_CONTAINER_ID}" >> /etc/hosts
+ sleep 20s
+ hive_metastore_ip=$(docker inspect --format='{{range
.NetworkSettings.Networks}}{{.IPAddress}}{{end}}'
${HIVE_METASTORE_CONTAINER_ID})
+
+ if [ -z "$hive_metastore_ip" ]; then
+ echo "Failed to get Hive Metastore IP address" >&2
+ exit 1
+ else
+ echo "Hive Metastore IP address is: $hive_metastore_ip"
+ fi
+
+ sed -i "s/metastore_ip/${hive_metastore_ip}/g"
"${trino_docker}"/hive.properties
+ docker cp "${trino_docker}"/hive.properties
"${CONTAINER_UID}trino":/etc/trino/catalog/
+
+ # trino load hive catalog need restart server
+ max_retries=3
+
+ function control_container() {
+ max_retries=3
+ operation=$1
+ expected_status=$2
+ retries=0
+
+ while [ $retries -lt $max_retries ]
+ do
+ status=$(docker inspect --format '{{.State.Running}}'
${TRINO_CONTAINER_ID})
+ if [ "${status}" == "${expected_status}" ]; then
+ echo "Container ${TRINO_CONTAINER_ID} has ${operation}ed
successfully."
+ break
+ else
+ echo "Waiting for container ${TRINO_CONTAINER_ID} to
${operation}..."
+ sleep 5s
+ ((retries++))
+ fi
+ sleep 3s
+ done
+
+ if [ $retries -eq $max_retries ]; then
+ echo "${operation} operation failed to complete after
$max_retries attempts."
+ exit 1
+ fi
+ }
+ # Stop the container
+ docker stop ${TRINO_CONTAINER_ID}
+ sleep 5s
+ control_container "stop" "false"
+
+ # Start the container
+ docker start ${TRINO_CONTAINER_ID}
+ control_container "start" "true"
+
+ # waite trino init
+ sleep 20s
+ # execute create table sql
+ docker exec -it ${TRINO_CONTAINER_ID} /bin/bash -c 'trino -f
/scripts/create_trino_table.sql'
+ fi
+fi
diff --git a/docs/zh-CN/community/developer-guide/regression-testing.md
b/docs/zh-CN/community/developer-guide/regression-testing.md
index 3617b4d769..a9243496c4 100644
--- a/docs/zh-CN/community/developer-guide/regression-testing.md
+++ b/docs/zh-CN/community/developer-guide/regression-testing.md
@@ -605,7 +605,7 @@ Doris 支持一些外部署数据源的查询。所以回归框架也提供了
1. 启动 Container
- Doris 目前支持 es, mysql, pg, hive, sqlserver, oracle, iceberg, hudi 等数据源的
Docker compose。相关文件存放在 `docker/thirdparties/docker-compose` 目录下。
+ Doris 目前支持 es, mysql, pg, hive, sqlserver, oracle, iceberg, hudi, trino
等数据源的 Docker compose。相关文件存放在 `docker/thirdparties/docker-compose` 目录下。
默认情况下,可以直接通过以下命令启动所有外部数据源的 Docker container:
(注意,hive和hudi container 需要下载预制的数据文件,请参阅下面 hive和hudi 相关的文档。)
@@ -795,6 +795,20 @@ Doris 支持一些外部署数据源的查询。所以回归框架也提供了
```
更多使用方式可参阅 [Hudi 官方文档](https://hudi.apache.org/docs/docker_demo)。
+
+ 10. Trino
+ Trino 相关的 Docker compose 文件存放在 docker/thirdparties/docker-compose/trino
下。
+ 模版文件:
+ * gen_env.sh.tpl :用于生成 HDFS相关端口号,无需修改,若出现端口冲突,可以对端口号进行修改。
+ * hive.properties.tpl :用于配置trino catalog 信息,无需修改。
+ * trino_hive.env.tpl :Hive 的环境配置信息,无需修改。
+ * trino_hive.yaml.tpl :Docker compose 文件,无需修改。
+ 启动 Trino docker 后,会配置一套 Trino + hive catalog 环境,此时 Trino 拥有两个catalog
+ 1. hive
+ 2. tpch(trino docker 自带)
+
+ 更多使用方式可参阅 [Trino
官方文档](https://trino.io/docs/current/installation/containers.html)
+
2. 运行回归测试
外表相关的回归测试默认是关闭的,可以修改 `regression-test/conf/regression-conf.groovy`
中的以下配置来开启:
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]