E-MapReduce(EMR)では、Hive で Paimon のデータをクエリできます。このトピックでは、Hive で Paimon のデータをクエリする方法について説明します。
前提条件
Hive サービスと Paimon サービスを含む Data Lake またはカスタムクラスターが作成されていること。クラスターの作成方法の詳細については、「クラスターの作成」をご参照ください。
制限事項
EMR V3.46.0 以降のマイナーバージョンのクラスター、または EMR V5.12.0 以降のマイナーバージョンのクラスターのみが、Hive で Paimon のデータをクエリできます。
手順
Hive カタログおよび Data Lake Formation(DLF)カタログで作成されたテーブルからデータをクエリします。
Hive カタログを使用して他のサービスから Hive Metastore にメタデータを同期した後、Hive カタログ内のテーブルからデータをクエリできます。EMR クラスターの作成時に [メタデータ] に [DLF 統合メタデータ] を選択した場合は、DLF カタログを使用して他のサービスから DLF にメタデータを同期し、Hive でメタデータをクエリできます。
次の例は、Spark を使用して Hive カタログにデータを書き込み、Hive で Paimon のデータをクエリする方法を示しています。
次のコマンドを実行して 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 という名前のカタログを定義します。spark.sql.catalog.paimon.metastore: カタログで使用されるメタデータストレージタイプを指定します。hiveに設定すると、メタデータは Hive Metastore に同期されます。spark.sql.catalog.paimon.uri: Hive Metastore のアドレスとポート番号を指定します。thrift://master-1-1:9083に設定すると、Spark SQL クライアントはmaster-1-1ノードで実行され、リスニングポートが 9083 である Hive Metastore に接続してメタデータ情報を取得します。spark.sql.catalog.paimon.warehouse: データウェアハウスの実際の場所を指定します。ビジネス要件に基づいてこのパラメーターを設定します。
次の Spark SQL ステートメントを実行して、作成されたカタログに Paimon テーブルを作成し、テーブルにデータを書き込みます。
-- paimon カタログに切り替えます。 USE paimon; -- 作成されたカタログにテストデータベースを作成し、そのデータベースを使用します。 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 ステートメントを実行して、Paimon テーブルに書き込まれたデータをクエリします。
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;