Paimon与Trino集成

E-MapReduce支持在Trino中查询Paimon数据。本文通过示例为您介绍如何在Trino中查询Paimon中的数据。

前提条件

已创建选择了Trino和Paimon的DataLake或Custom类型的集群,创建集群详情请参见创建集群

使用限制

EMR-3.46.0及后续版本、EMR-5.12.0及后续版本的集群,支持在Trino中查询Paimon中的数据。

操作步骤

  1. 指定warehouse路径。

    Paimon将数据和元数据都保存在文件系统(例如,HDFS)或对象存储(例如,OSS-HDFS)中,存储的根路径由warehouse参数指定。

    1. 进入Trino服务的配置页面。

      1. 登录E-MapReduce控制台

      2. 在顶部菜单栏处,根据实际情况选择地域和资源组

      3. 在EMR on ECS页面,单击目标集群操作列的集群服务

      4. 集群服务页面,单击Trino服务区域的配置

    2. 配置页面,找到paimon.properties页签。

    3. 修改warehouse参数,参数值需指向存储的根路径。

    4. 保存配置。

      1. 单击保存

      2. 在弹出的对话框中,输入执行原因,单击保存

  2. (可选)指定MetaStore类型。

    Trino使用的MetaStore类型根据您创建集群时选择的服务自动设置。如果您想更改MetaStore类型,可以在Trino服务配置页面的paimon.properties页签,修改metastore的参数值。

    Paimon共有以下三种MetaStore类型:

    • filesystem:元数据仅保存在文件系统或对象存储中。

    • hive:元数据同步到指定的Hive MetaStore中。

    • dlf:元数据同步到DLF中。

  3. 重启Trino服务。

    1. 在Trino服务配置页面,选择右上角的更多操作>重启

    2. 在弹出的对话框中,输入执行原因,单击确定

    3. 确认对话框中,单击确定

  4. 查询Paimon数据。

    下面以Spark写入Filesystem Catalog为例。

    1. 执行以下命令,启动Spark SQL。

      spark-sql --conf spark.sql.catalog.paimon=org.apache.paimon.spark.SparkCatalog --conf spark.sql.catalog.paimon.metastore=filesystem --conf spark.sql.catalog.paimon.warehouse=oss://<OSS-HDFS域名>/warehouse
      说明
      • spark.sql.catalog.paimon:定义了名为paimon的Catalog。

      • spark.sql.catalog.paimon.metastore:指定Catalog使用的元数据存储类型。设置为filesystem意味着元数据存储在本地文件系统。

      • spark.sql.catalog.paimon.warehouse:配置数据仓库的实际位置,请根据实际情况修改。

    2. 执行以下Spark SQL语句,在Catalog中创建一张表,并写入数据。

      -- 切换到paimon catalog
      USE paimon;
      
      -- 在创建的catalog中,创建并使用一个测试database。
      CREATE DATABASE test_db;
      USE test_db;
      
      -- 创建Paimon表。
      CREATE TABLE test_tbl (
          uuid int,
          name string,
          price double
      ) TBLPROPERTIES (
          'primary-key' = 'uuid'
      );
      
      -- 向Paimon中写入数据。
      INSERT INTO test_tbl VALUES (1, 'apple', 3.5), (2, 'banana', 4.0), (3, 'cherry', 20.5);
    3. 执行以下命令,启动Trino。

      trino --server master-1-1:9090 --catalog paimon --schema default --user hadoop
    4. 执行以下命令,查询刚刚写入的数据。

      USE test_db;
      
      SELECT * FROM test_tbl;