E-MapReduce的Flink Table Store服務支持在Hive中查詢數據。本文通過示例為您介紹如何在Hive中查詢Flink Table Store中的數據。
使用限制
僅EMR-3.45.0版本、EMR-5.11.0版本的集群,支持在Hive中查詢Flink Table Store中的數據。
操作步驟
查詢Hive Catalog與DLF Catalog中的表。
通過Hive Catalog同步元數據到Hive MetaStore后,可以在Hive中直接查詢Hive Catalog中的表。如果創建集群時,元數據選擇為DLF統一元數據,則其它服務也可以通過DLF Catalog同步元數據到DLF,并在Hive中查詢。
下面以Spark寫入Hive Catalog,在Hive查詢為例。
執行以下命令,啟動Spark SQL。
spark-sql --conf spark.sql.catalog.tablestore=org.apache.flink.table.store.spark.SparkCatalog --conf spark.sql.catalog.tablestore.metastore=hive --conf spark.sql.catalog.tablestore.uri=thrift://master-1-1:9083 --conf spark.sql.catalog.tablestore.warehouse=oss://oss-bucket/warehouse
執行以下Spark SQL語句,在Catalog中創建一張表,并寫入數據。
-- 在之前創建的Catalog中,創建并使用一個測試database。 CREATE DATABASE tablestore.test_db; USE tablestore.test_db; -- 創建Flink Table Store表。 CREATE TABLE test_tbl ( uuid int, name string, price double ) TBLPROPERTIES ( 'primary-key' = 'uuid' ); -- 向Flink Table Store表中寫入數據。 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也可以將指定路徑下的Flink Table Store表添加為外表并查詢。
CREATE EXTERNAL TABLE test_ext_tbl STORED BY 'org.apache.flink.table.store.hive.TableStoreHiveStorageHandler' LOCATION 'oss://oss-bucket/warehouse/test_db.db/test_tbl'; SELECT * FROM test_ext_tbl;
文檔內容是否對您有幫助?