このトピックでは、Paimon ベースの Hologres サーバーレスデータレイクソリューションについて説明します。このソリューションにより、リソースを予約することなく、Object Storage Service (OSS) に保存されている Paimon データに対するクエリを、柔軟かつオンデマンドで高速化できます。課金は SQL 文でスキャンされたデータ量に対してのみ発生します。このソリューションは、柔軟でスケーラブルなデータレイクアーキテクチャを提供し、データの管理と活用を改善し、データドリブンな意思決定を向上させ、ビジネスイノベーションを推進するのに役立ちます。
背景情報
Apache Paimon は、ストリーミング処理とバッチ処理のための統一されたレイクストレージフォーマットであり、高スループットの書き込みと低レイテンシーのクエリをサポートします。Alibaba Cloud のビッグデータプラットフォーム上の主要なコンピュートエンジン (Flink、Hologres、MaxCompute、EMR Spark など) は、Paimon と緊密に統合されています。Apache Paimon を使用すると、OSS 上に独自のデータレイクストレージサービスを迅速に構築し、これらのコンピュートエンジンに接続してデータ分析を行うことができます。詳細については、「Apache Paimon」をご参照ください。
Hologres 共有クラスターは、MaxCompute の外部テーブルおよび OSS データレイク向けに設計された、サーバーレスのオンラインクエリ高速化サービスを提供します。ストレージとコンピュートが分離された Hologres のクラウドネイティブアーキテクチャ上に構築されており、共有クラスターは OSS 内のレイクデータの分析を高速化します。オンデマンドで使用でき、SQL 文によってスキャンされたデータ量に基づいて課金されます。詳細については、「共有クラスターの概要」をご参照ください。
アーキテクチャ

前提条件
-
Hologres 共有クラスターインスタンスを購入済みであること。購入方法の詳細については、「Hologres インスタンスの購入」をご参照ください。
-
Data Lake Formation (DLF) のメタデータ作成サービスを有効化済みであること。詳細については、「DLF クイックスタート」をご参照ください。
-
(オプション) DLF のカスタムデータカタログ機能を使用するには、まず DLF でデータカタログを作成する必要があります。このカタログは、外部サーバーを作成する際に使用します。詳細については、「データカタログの作成」をご参照ください。
-
データレイクストレージ用に Object Storage Service (OSS) を有効化済みであること。
-
OSS-HDFS サービスを有効化済みであること。詳細については、「OSS-HDFS サービスを有効にする」をご参照ください。
Hologres 専用インスタンスも、共有クラスターインスタンスと同様の手順で Paimon や他のレイク形式のデータの読み取りをサポートしています。このトピックでは、共有クラスターインスタンスを例として使用します。
注意事項
Hologres V2.1.6 以降のみが Paimon データレイクからのデータクエリをサポートします。
-
Hologres 共有クラスターは、OSS データレイクからのデータ読み取りのみをサポートしており、OSS データのインポートはサポートしていません。OSS データを Hologres の内部テーブルにインポートするには、専用インスタンスを使用してください。
手順
-
新しい EMR データレイクインスタンスの購入
EMR on ECS コンソールにログインし、EMR クラスターを作成します。詳細については、「クラスターの作成」をご参照ください。主なパラメーター設定は次のとおりです:
設定項目
説明
ビジネスシナリオ
[データレイク] を選択します。
オプションサービス
必要なサービスは Spark、Hive、Paimon です。必要に応じて他のサービスを選択します。
[メタデータ]
[DLF 統合メタデータ] を選択します。
DLF データカタログ
-
カスタム 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 サービスが有効化されているバケットの名前です。 -
Paimon テーブルを作成し、「データソースの構築」ステップで準備した textfile データをインポートします。
-- 作成したデータベースに切り替えます。 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}:*_textfile テーブルが格納されている Hive 内のデータベース名です。
-
Hologres 共有クラスターに外部サーバーを作成します。
説明新しい EMR データレイクインスタンスを作成する際:
-
[DLF データカタログ] をカスタムデータカタログに設定した場合、
dlf_catalogパラメーターをそのカスタムカタログに設定する必要があります。 -
[DLF データカタログ] をデフォルトカタログに設定した場合、
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 文は 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 クエリ文」をご参照ください。