Paimon与Hive集成

更新时间:
复制为 MD 格式

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

前提条件

已创建选择了HivePaimonDataLakeCustom类型的集群,创建集群详情请参见创建集群

使用限制

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

操作步骤

  1. 通过SSH方式连接集群的Master节点,具体操作请参见登录集群Master节点

  2. 通过Spark写入Paimon数据。

    其他服务通过Hive Catalog同步元数据到Hive MetaStore后,可以在Hive中直接查询Hive Catalog中的表。如果创建集群时,元数据选择为DLF统一元数据,则其它服务也可以通过DLF Catalog同步元数据到DLF,并在Hive中查询。

    下面以Spark写入Hive Catalog为例。

    1. 启动Spark SQL。

      使用spark-sql命令行工具连接到Paimon Catalog,并指定Hive Metastore的地址和数据仓库路径。

      spark-sql \
        --conf spark.sql.catalog.paimon=org.apache.paimon.spark.SparkCatalog \
        --conf spark.sql.catalog.paimon.metastore=hive \
        --conf spark.sql.catalog.paimon.uri=thrift://master-1-1:9083 \
        --conf spark.sql.catalog.paimon.warehouse=oss://<yourBucketName>/warehouse
      说明
      • spark.sql.catalog.paimon:定义了名为paimonCatalog。

      • spark.sql.catalog.paimon.metastore:指定Catalog使用的元数据存储类型。设置为hive意味着将元数据同步到Hive Metastore中。

      • spark.sql.catalog.paimon.uri:为Hive MetaStore Service的地址和端口。参数值为thrift://master-1-1:9083,这意味着Spark SQL将连接到这个运行在master-1-1主机上、监听9083端口的Hive Metastore服务以获取元数据信息。

      • spark.sql.catalog.paimon.warehouse:配置数据仓库的实际位置,请根据实际情况修改。其中<yourBucketName>OSS的存储空间,创建操作请参见创建存储空间

    2. 创建数据库和表。

      Paimon中创建一个测试数据库test_db和表test_tbl,并插入一些数据。

      -- 切换到paimon catalog
      USE paimon;
      
      -- 在已创建的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. 通过Hive查询Paimon数据。

    1. 连接Hive

    2. 执行以下Hive SQL,查询刚刚写入的数据。

      select * from test_db.test_tbl;

      返回以下信息。

      OK
      1       apple   3.5
      2       banana  4.0
      3       cherry  20.5
  4. 通过Hive外表查询Paimon数据。

    Hive支持将指定路径下的Paimon表添加为外部表,并直接查询其数据。

    1. 连接Hive

    2. Hive中执行以下命令,将Paimon表添加为外部表。

      CREATE EXTERNAL TABLE test_ext_tbl
      STORED BY 'org.apache.paimon.hive.PaimonStorageHandler'
      LOCATION 'oss:// <yourBucketName>/warehouse/test_db.db/test_tbl';

      参数说明:

      • STORED BY 'org.apache.paimon.hive.PaimonStorageHandler':指定使用Paimon的存储处理器。

      • LOCATION:指定Paimon表的存储路径。

        请根据实际情况替换oss://<yourBucketName>/warehouse/test_db.db/test_tbl为实际的Paimon表存储路径。

    3. 执行以下 SQL 语句,查询刚刚创建的外部表。

      SELECT * FROM test_ext_tbl;