E-MapReduce支援在Hive中查詢Paimon資料。本文通過樣本為您介紹如何在Hive中查詢Paimon中的資料。
前提條件
已建立選擇了Hive和Paimon的DataLake或Custom類型的叢集,建立叢集詳情請參見建立叢集。
使用限制
僅EMR-3.46.0及後續版本、EMR-5.12.0及後續版本的叢集,支援在Hive中查詢Paimon中的資料。
操作步驟
-
通過SSH方式串連叢集的Master節點,具體操作請參見登入叢集Master節點。
-
通過Spark寫入Paimon資料。
其他服務通過Hive Catalog同步中繼資料到Hive MetaStore後,可以在Hive中直接查詢Hive Catalog中的表。如果建立叢集時,元数据選擇為DLF统一元数据,則其它服務也可以通過DLF Catalog同步中繼資料到DLF,並在Hive中查詢。
下面以Spark寫入Hive Catalog為例。
-
啟動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:定義了名為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:配置資料倉儲的實際位置,請根據實際情況修改。其中<yourBucketName>為OSS的儲存空間,建立操作請參見建立儲存空間。
-
-
建立資料庫和表。
在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);
-
-
通過Hive查詢Paimon資料。
-
執行以下Hive SQL,查詢剛剛寫入的資料。
select * from test_db.test_tbl;返回以下資訊。
OK 1 apple 3.5 2 banana 4.0 3 cherry 20.5
-
通過Hive外表查詢Paimon資料。
Hive支援將指定路徑下的Paimon表添加為外部表格,並直接查詢其資料。
-
在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表格儲存體路徑。
-
-
執行以下 SQL 陳述式,查詢剛剛建立的外部表格。
SELECT * FROM test_ext_tbl;