E-MapReduce支持在Hive中查询Paimon数据。本文通过示例为您介绍如何在Hive中查询Paimon中的数据。
前提条件
已创建选择了Hive和Paimon的DataLake或Custom类型的集群,创建集群详情请参见创建集群。
使用限制
仅EMR-3.46.0及后续版本、EMR-5.12.0及后续版本的集群,支持在Hive中查询Paimon中的数据。
操作步骤
查询Hive Catalog与DLF Catalog中的表。
其他服务通过Hive Catalog同步元数据到Hive MetaStore后,可以在Hive中直接查询Hive Catalog中的表。如果创建集群时,元数据选择为DLF统一元数据,则其它服务也可以通过DLF Catalog同步元数据到DLF,并在Hive中查询。
下面以Spark写入Hive Catalog为例。
执行以下命令,启动Spark SQL。
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
:定义了名为paimon的Catalog。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
:配置数据仓库的实际位置,请根据实际情况修改。
执行以下Spark SQL语句,在Catalog中创建一张表,并写入数据。
-- 切换到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);
执行以下命令,启动Hive CLI。
hive
执行以下Hive SQL,查询刚刚写入的数据。
select * from test_db.test_tbl;
添加并查询外表。
Hive也可以将指定路径下的Paimon表添加为外表并查询。
CREATE EXTERNAL TABLE test_ext_tbl STORED BY 'org.apache.paimon.hive.PaimonStorageHandler' LOCATION 'oss:// <yourBucketName>/warehouse/test_db.db/test_tbl'; SELECT * FROM test_ext_tbl;