Paimon を使用した Hologres サーバーレスデータレイクソリューションは、Object Storage Service (OSS) に保存された Paimon データに対して、オンデマンドでリソースを割り当て、従量課金で高速なクエリを実現します。リソース予約は不要です。柔軟でスケーラブルなアーキテクチャにより、データレイク上のデータをより効果的に管理・活用し、データ駆動型の意思決定やビジネスイノベーションを支援します。
背景情報
Apache Paimon はストリーミング処理とバッチ処理を統合するデータレイクストレージフォーマットであり、高スループットでの書き込みと低遅延でのクエリをサポートします。Alibaba Cloud のビッグデータプラットフォーム上で動作する Flink、Hologres、MaxCompute、EMR on Spark などのコンピューティングエンジンが Paimon と統合されています。OSS 上にデータレイクストレージサービスを構築し、これらのエンジンと接続することで、データレイク分析が可能になります。詳細については、「Apache Paimon」をご参照ください。
Hologres 共有クラスターは、MaxCompute および OSS データレイク上の外部テーブル向けにサーバーレスのクエリアクセラレーションサービスを提供します。ストレージとコンピューティングを分離したアーキテクチャに基づき、共有クラスターはスキャンされたデータ量に応じた従量課金で、OSS 上のデータレイク分析を高速化します。詳細については、「共有クラスターの概要」をご参照ください。
アーキテクチャ

前提条件
-
Hologres 共有クラスターインスタンスを購入します。詳細については、「インスタンスの作成」をご参照ください。
-
Data Lake Formation (DLF) サービスを有効化します。詳細については、「DLF クイックスタート」をご参照ください。
-
(オプション)DLF でカスタムデータカタログを使用する場合は、事前にデータカタログを作成してください。このカタログは、外部サーバー作成時に指定します。詳細については、「データカタログの作成」をご参照ください。
-
データレイクストレージ用に OSS を有効化 します。
-
OSS-HDFS サービスを有効化します。詳細については、「OSS-HDFS サービスの有効化」をご参照ください。
Hologres 専用型インスタンスも、Paimon やその他のデータレイクフォーマットの読み取りをサポートしています。手順は共有クラスターインスタンスの場合と同じです。本トピックでは、共有クラスターインスタンスを例として説明します。
注意事項
-
Hologres V2.1.6 以降でのみ、Paimon データレイクのクエリがサポートされます。
-
Hologres 共有クラスターは OSS データレイクデータの読み取りのみをサポートしており、OSS からのデータインポートはサポートしていません。OSS のデータを Hologres 内部テーブルにインポートするには、専用型インスタンスを使用してください。
操作手順
-
Elastic MapReduce (EMR) データレイクインスタンスを購入します。
EMR on ECS コンソール にログインし、EMR クラスターを作成します。詳細については、「クラスターの作成」をご参照ください。以下の表に主要なパラメーターを示します。
設定項目
説明
ビジネスシナリオ
データレイク を選択します。
Optional Services
必要なサービスは Spark、Hive、Paimon です。必要に応じて他のサービスも選択してください。
メタデータ
DLF Unified Metadata を選択します。
DLF Catalog
-
カスタム DLF データカタログを使用する場合は、作成済みのカタログ(例:paimon_catalog)を選択します。詳細については、「データカタログの作成」をご参照ください。
-
デフォルトカタログを選択することもできます。デフォルト DLF カタログを使用する場合、Hologres 共有クラスターで外部サーバーを作成する際に
dlf_catalogパラメーターを指定する必要はありません。
クラスターストレージのルートパス
OSS-HDFS サービスが有効化されたバケットのパスを選択します。
-
-
データソースを構築します。
本例では、10 GB の TPC-H データを使用します。EMR Hive を使用して textfile 形式のデータソースを構築します。詳細については、「EMR Spark を使用したデータの構築」をご参照ください。
重要データ生成時に、コマンド
./dbgen -vf -s 100を./dbgen -vf -s 10に置き換えてください。 -
Spark を使用して Paimon テーブルを作成します。
-
Spark SQL にログインします。
spark-sql --conf spark.sql.catalog.paimon=org.apache.paimon.spark.SparkCatalog --conf spark.sql.catalog.paimon.metastore=dlf -
データベースを作成します。
-- データベースを作成します。 CREATE DATABASE paimon_db location 'oss://${oss-hdfs-bucket}/tpch_10G/paimon_tpch_10g/';${oss-hdfs-bucket}:OSS-HDFS サービスが有効化されたバケットの名前です。 -
データソースの構築 ステップで準備した textfile 形式のデータを使用して、Paimon テーブルを作成します。
-- 作成したデータベースに切り替えます。 use paimon_db; -- テーブルを作成し、データをインポートします。 CREATE TABLE nation_paimon TBLPROPERTIES ( 'primary-key' = 'N_NATIONKEY' ) AS SELECT * from ${source}.nation_textfile; CREATE TABLE region_paimon TBLPROPERTIES ( 'primary-key' = 'R_REGIONKEY' ) AS SELECT * FROM ${source}.region_textfile; CREATE TABLE supplier_paimon TBLPROPERTIES ( 'primary-key' = 'S_SUPPKEY' ) AS SELECT * FROM ${source}.supplier_textfile; CREATE TABLE customer_paimon partitioned BY (c_mktsegment) TBLPROPERTIES ( 'primary-key' = 'C_CUSTKEY' ) AS SELECT * FROM ${source}.customer_textfile; CREATE TABLE part_paimon partitioned BY (p_brand) TBLPROPERTIES ( 'primary-key' = 'P_PARTKEY' ) AS SELECT * FROM ${source}.part_textfile; CREATE TABLE partsupp_paimon TBLPROPERTIES ( 'primary-key' = 'PS_PARTKEY,PS_SUPPKEY' ) AS SELECT * FROM ${source}.partsupp_textfile; CREATE TABLE orders_paimon partitioned BY (o_orderdate) TBLPROPERTIES ( 'primary-key' = 'O_ORDERKEY' ) AS SELECT * FROM ${source}.orders_textfile; CREATE TABLE lineitem_paimon partitioned BY (l_shipdate) TBLPROPERTIES ( 'primary-key' = 'L_ORDERKEY,L_LINENUMBER' ) AS SELECT * FROM ${source}.lineitem_textfile;${source}:Hive 内で *_textfile テーブルが存在するデータベースの名前です。
-
-
Hologres 共有クラスターで外部サーバーを作成します。
説明EMR データレイクインスタンス作成時に以下の設定を行った場合:
-
DLF Catalog パラメーターでカスタムデータカタログを選択した場合は、
dlf_catalogオプションにそのカタログ名を設定する必要があります。 -
DLF Catalog パラメーターでデフォルトカタログを選択した場合は、ステートメントから
dlf_catalogオプションを省略できます。
-- 外部サーバーを作成します。 CREATE SERVER IF NOT EXISTS dlf_server FOREIGN data wrapper dlf_fdw options ( dlf_catalog 'paimon_catalog', dlf_endpoint 'dlf-share.cn-shanghai.aliyuncs.com', oss_endpoint 'cn-shanghai.oss-dls.aliyuncs.com' ); -
-
Hologres 共有クラスターで Paimon テーブルに対応する外部テーブルを作成します。
IMPORT FOREIGN SCHEMA paimon_db LIMIT TO ( lineitem_paimon ) FROM SERVER dlf_server INTO public options (if_table_exist 'update'); -
データをクエリします。
次の SQL ステートメントは、例として Query 1 (Q1) を示しています。
SELECT l_returnflag, l_linestatus, SUM(l_quantity) AS sum_qty, SUM(l_extendedprice) AS sum_base_price, SUM(l_extendedprice * (1 - l_discount)) AS sum_disc_price, SUM(l_extendedprice * (1 - l_discount) * (1 + l_tax)) AS sum_charge, AVG(l_quantity) AS avg_qty, AVG(l_extendedprice) AS avg_price, AVG(l_discount) AS avg_disc, COUNT(*) AS count_order FROM lineitem_paimon WHERE l_shipdate <= date '1998-12-01' - interval '120' DAY GROUP BY l_returnflag, l_linestatus ORDER BY l_returnflag, l_linestatus;説明残りの 21 件の SQL ステートメントについては、「22 件の TPC-H クエリ文」をご参照ください。