E-MapReduce (EMR) を使用すると、Hive から Paimon データをクエリできます。このトピックでは、その例を示します。
前提条件
Hive と Paimon の両方を選択した DataLake クラスターまたはカスタムクラスターが必要です。詳細については、「クラスターの作成」をご参照ください。
制限事項
Hive からの Paimon データのクエリは、EMR-3.46.0 以降または EMR-5.12.0 以降を実行している EMR クラスターでのみサポートされています。
操作手順
-
SSH 経由でクラスターのマスターノードに接続します。詳細については、「クラスターのマスターノードへのログイン」をご参照ください。
-
Spark を使用して Paimon にデータを書き込みます。
サービスが Hive カタログを介してメタデータを Hive メタストアに同期すると、Hive でそれらのテーブルを直接クエリできます。または、クラスター作成時にMetadataをDLF 統合メタデータオプションで選択した場合、サービスは Hive でクエリ可能な DLF カタログにメタデータを同期することもできます。
この例では、Spark を使用して Hive カタログにデータを書き込む方法を示します。
-
Spark SQL を起動します。
spark-sqlコマンドラインツールを使用して Paimon カタログに接続し、Hive メタストアのエンドポイントとデータウェアハウスのパスを指定します。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 メタストアと同期されます。 -
spark.sql.catalog.paimon.uri:Hive メタストアサービスのアドレスとポートです。thrift://master-1-1:9083という値は、Spark SQL がmaster-1-1ホストで実行され、ポート 9083 でリッスンしている Hive メタストアサービスに接続してメタデータを取得することを意味します。 -
spark.sql.catalog.paimon.warehouse:データウェアハウスのルートパスを設定します。ご利用の環境に応じて値を置き換えてください。<yourBucketName>はご利用の OSS バケット名です。バケットの作成方法の詳細については、「バケットの作成」をご参照ください。
-
-
データベースとテーブルを作成します。
Paimon に
test_dbという名前のテストデータベースとtest_tblという名前のテーブルを作成し、データを挿入します。-- paimon カタログに切り替えます。 USE paimon; -- 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 から Paimon データをクエリします。
-
次の HiveQL ステートメントを実行して、新しく挿入されたデータをクエリします。
select * from test_db.test_tbl;このステートメントは次の出力を返します。
OK 1 apple 3.5 2 banana 4.0 3 cherry 20.5
-
Hive 外部テーブルを介して Paimon データをクエリします。
指定したパスから Paimon テーブルを Hive 外部テーブルとしてマッピングし、そのデータを直接クエリすることもできます。
-
Hive で、次のコマンドを実行して外部テーブルを作成します。
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;