Trino on iceberg最佳实践
概述
Iceberg是一种开放的数据湖表格式。您可以借助Iceberg快速地在HDFS或者华为云OBS上构建自己的数据湖存储服务,并借助开源大数据生态的Spark、Flink、Hive和Trino等计算引擎来实现数据湖的分析。其中,Trino是针对OLAP设计的用于高效的分布式查询大量数据的分析引擎。主要具备下列优点:
- 屏蔽底层数据源,提供统一查询接口。
- 基于内存计算,可以跨不同数据源完成联邦查询。
- 使用Trino进行数据治理,可以通过Trino进行异构数据的提取、整合与分析,打破数据孤岛、提高数据治理能力。
前提条件
- 完成Trino部署,了解更多请参考Trino最新版本的官方文档,如需查看指定版本的官方文档,请访问https://trino.io/docs/VersionID/ ,将VersionID替换为版本号,比如https://trino.io/docs/460/ 即访问Trino 460的官方文档。
- 完成Hadoop部署并对接OBS,详情参考Hadoop对接OBS。
配置OBS对接
- 复制hadoop-huaweicloud-3.1.1-hw-xxx.jar到${TRINO_HOME}/plugin/iceberg/hdfs目录。
- 部署Hive MetaStore,推荐使用远程模式。
- 配置catalog。
执行以下命令,进入配置文件编辑页面:
vim $TRINO_HOME/etc/catalog/iceberg.properties
在配置文件中写入以下配置项:
connector.name=iceberg hive.metastore.uri=thrift://jtc-vm:9083 fs.hadoop.enabled=true hive.config.resources=${HADOOP_HOME}/etc/hadoop/core-site.xml
其中uri参数为HMS服务的URI,您需要结合自身的业务和环境进行配置。
修改完成后,按“Esc”,输入:wq保存并退出文件编辑。
- 使用Trino Client CLI连接Trino Server进行验证,连接时使用参数--catalog指定Catalog名称。
trino Trino_URI --catalog Catalog_Name
其中Trino_URI请参考${TRINO_HOME}/etc/config.properties。Catalog_Name为上一步配置的connector.name。例如:
trino http://jtc-vm:8080 --catalog iceberg
- 创建SCHEMA并指定LOCATION,请执行以下命令:
CREATE SCHEMA schema_name AUTHORIZATION user_name WITH (LOCATION = file_path);
- schema_name:SCHEMA名称,此处以schema_example为例。
- user_name:用户名。此处以root为例。
- file_path:OBS桶中目录的路径,例如桶名为jtc-pfs001,目录名为warehouse/trino-iceberg:
CREATE SCHEMA schema_example AUTHORIZATION root WITH (LOCATION = 'obs://jtc-pfs001/warehouse/trino-iceberg');
- 创建TABLE,指定上一步的SCHEMA。
CREATE TABLE IF NOT EXISTS schema_example.orders( order_key bigint, order_status varchar, total_price double, order_date date);