すべてのプロダクト
Search
ドキュメントセンター

Hologres:Paimon を使用した Hologres サーバーレスデータレイクソリューション

最終更新日:Jul 18, 2026

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 上のデータレイク分析を高速化します。詳細については、「共有クラスターの概要」をご参照ください。

アーキテクチャ

image.png

前提条件

  • Hologres 共有クラスターインスタンスを購入します。詳細については、「インスタンスの作成」をご参照ください。

  • Data Lake Formation (DLF) サービスを有効化します。詳細については、「DLF クイックスタート」をご参照ください。

  • (オプション)DLF でカスタムデータカタログを使用する場合は、事前にデータカタログを作成してください。このカタログは、外部サーバー作成時に指定します。詳細については、「データカタログの作成」をご参照ください。

  • データレイクストレージ用に OSS を有効化 します。

  • OSS-HDFS サービスを有効化します。詳細については、「OSS-HDFS サービスの有効化」をご参照ください。

説明

Hologres 専用型インスタンスも、Paimon やその他のデータレイクフォーマットの読み取りをサポートしています。手順は共有クラスターインスタンスの場合と同じです。本トピックでは、共有クラスターインスタンスを例として説明します。

注意事項

  • Hologres V2.1.6 以降でのみ、Paimon データレイクのクエリがサポートされます。

  • Hologres 共有クラスターは OSS データレイクデータの読み取りのみをサポートしており、OSS からのデータインポートはサポートしていません。OSS のデータを Hologres 内部テーブルにインポートするには、専用型インスタンスを使用してください。

操作手順

  1. 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 サービスが有効化されたバケットのパスを選択します。

  2. データソースを構築します。

    本例では、10 GB の TPC-H データを使用します。EMR Hive を使用して textfile 形式のデータソースを構築します。詳細については、「EMR Spark を使用したデータの構築」をご参照ください。

    重要

    データ生成時に、コマンド ./dbgen -vf -s 100./dbgen -vf -s 10 に置き換えてください。

  3. Spark を使用して Paimon テーブルを作成します。

    1. Spark SQL にログインします。

      spark-sql --conf spark.sql.catalog.paimon=org.apache.paimon.spark.SparkCatalog --conf spark.sql.catalog.paimon.metastore=dlf
    2. データベースを作成します。

      -- データベースを作成します。
      CREATE DATABASE paimon_db location 'oss://${oss-hdfs-bucket}/tpch_10G/paimon_tpch_10g/';

      ${oss-hdfs-bucket}:OSS-HDFS サービスが有効化されたバケットの名前です。

    3. データソースの構築 ステップで準備した 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 テーブルが存在するデータベースの名前です。

  4. 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'
    );
  5. Hologres 共有クラスターで Paimon テーブルに対応する外部テーブルを作成します。

    IMPORT FOREIGN SCHEMA paimon_db LIMIT TO
    (
      lineitem_paimon
    )
    FROM SERVER dlf_server INTO public options (if_table_exist 'update');
  6. データをクエリします。

    次の 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 クエリ文」をご参照ください。