更新时间:2025-09-18 GMT+08:00
分享

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的官方文档。

配置OBS对接

  1. 复制hadoop-huaweicloud-3.1.1-hw-xxx.jar到${TRINO_HOME}/plugin/iceberg/hdfs目录。
  2. 部署Hive MetaStore,推荐使用远程模式。
  3. 配置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保存并退出文件编辑。

  4. 使用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

  5. 创建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');

  6. 创建TABLE,指定上一步的SCHEMA。

    CREATE TABLE IF NOT EXISTS schema_example.orders(
        order_key bigint, 
        order_status varchar, 
        total_price double, 
        order_date date);

相关文档