このトピックでは、サーバーレスモードでの Apache Paimon ベースの Hologres データレイクソリューションについて説明します。このソリューションは、オブジェクトストレージサービス (OSS) 内の Apache Paimon ベースのデータレイクのデータの柔軟なクエリ高速化に適しています。予約リソースを必要とせずに、オンデマンドでこのソリューションを使用できます。使用したリソースの量に基づいて課金されます。このソリューションは、データをより適切に管理および活用できる、柔軟でスケーラブルなデータレイクアーキテクチャを提供します。これは、データに基づく意思決定とビジネス革新の機能を向上させるのに役立ちます。
背景情報
Apache Paimon は、ストリーミングモードとバッチモードでデータを処理できる統合レイクストレージです。 Apache Paimon は、高スループットのデータ書き込みと低レイテンシのデータクエリをサポートしています。 Alibaba Cloud ビッグデータプラットフォームの一般的なコンピューティングエンジン (Realtime Compute for Apache Flink、Hologres、MaxCompute、E-MapReduce (EMR) Spark など) は、Apache Paimon と包括的に統合されています。 Apache Paimon を使用して、Alibaba Cloud OSS にデータレイクストレージサービスを効率的にデプロイし、前述のコンピューティングエンジンに接続してデータレイク分析を実行できます。詳細については、「Apache Paimon」をご参照ください。
Hologres 共有クラスターは、外部テーブルを使用して MaxCompute および OSS のデータのオンラインクエリを高速化するサーバーレスサービスです。 Hologres 共有クラスターは、ストレージとコンピューティングを分離するクラウドネイティブアーキテクチャを使用します。これにより、OSS のデータの分析が高速化されます。オンデマンドでリソースを使用でき、SQL ステートメントによってスキャンされるデータ量に基づいて課金されます。詳細については、「Hologres 共有クラスターの概要」をご参照ください。
アーキテクチャ
前提条件
Hologres 共有クラスターインスタンスが購入されていること。詳細については、「Hologres インスタンスを購入する」をご参照ください。
Data Lake Formation (DLF) がアクティブ化されていること。詳細については、「はじめに」をご参照ください。
オプション。 DLF のカタログが作成されていること。カスタム DLF カタログを使用する場合は、この前提条件を満たす必要があります。カタログは、外部サーバーを作成するときに使用されます。詳細については、「カタログ」の「カタログの作成」セクションをご参照ください。
データレイクストレージ用に OSS がアクティブ化されていること。詳細については、「OSS を使い始める」をご参照ください。
OSS-HDFS が有効になっていること。詳細については、「OSS-HDFS を有効にする」をご参照ください。
Hologres 専用インスタンスを使用して、Hologres 共有クラスターインスタンスを使用するのと同じ方法で、Apache Paimon ベースのデータレイクまたは他のデータレイクからデータを読み取ることもできます。この例では、Hologres 共有クラスターインスタンスが使用されています。
使用上の注意
Hologres V2.1.6 以降では、Apache Paimon ベースのデータレイクのデータをクエリできます。
Hologres 共有クラスターインスタンスでは、OSS データレイクからのデータの読み取りのみが可能です。 OSS から Hologres 内部テーブルにデータをインポートする場合は、Hologres 専用インスタンスを使用する必要があります。
手順
EMR コンソールの新しいデータレイクシナリオでクラスターを作成します。
EMR コンソールにログオンします。左側のナビゲーションペインで、[ECS 上の EMR] をクリックします。次に、クラスターを作成します。詳細については、「E-MapReduce を使い始める」トピックの手順 1: クラスターを作成するをご参照ください。次の表にパラメーターを示します。
パラメーター
説明
[ビジネスシナリオ]
[新しいデータレイク] を選択します。
[オプションサービス (少なくとも 1 つ選択)]
Spark、Hive、および Paimon を選択します。ビジネス要件に基づいて、さらにサービスを選択できます。
[メタデータ]
[DLF 統合メタデータ] を選択します。
[DLF カタログ]
paimon_catalog などのカスタム DLF カタログを選択できます。カスタム DLF カタログの作成方法の詳細については、「カタログ」トピックの「カタログの作成」をご参照ください。
デフォルトの DLF カタログを選択することもできます。デフォルトの DLF カタログを選択した場合は、Hologres 共有クラスタの外部サーバーを作成するときに
dlf_catalog
パラメータを設定する必要はありません。
[クラスターのルートストレージディレクトリ]
OSS-HDFS サービスが有効になっているバケットを選択します。
データソースを作成します。
EMR Hive を使用して、テキスト形式の 10 GB TPC-H テストデータセットを生成します。詳細については、「Delta Lake に基づくデータレイクハウスソリューションを実装するために Hologres を使用する」トピックのEMR Spark を使用してデータを処理するをご参照ください。
重要この例では、
./dbgen -vf -s 100
コマンドを./dbgen -vf -s 10
に置き換える必要があります。Spark を使用して Apache 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 が有効になっているバケットの名前。Apache 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 カタログ] にカスタム DLF カタログを選択した場合は、次のサンプルコードの
dlf_catalog
パラメータをカスタム DLF カタログの名前に設定します。EMR クラスタを作成するときに [DLF カタログ] にデフォルトの 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 共有クラスターインスタンスの Apache Paimon テーブルの外部テーブルを作成します。
IMPORT FOREIGN SCHEMA paimon_db LIMIT TO ( lineitem_paimon ) FROM SERVER dlf_server INTO public options (if_table_exist 'update');
データをクエリします。
この例では、最初の TPC-H クエリステートメントが使用されています。
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 個のクエリステートメントの詳細については、「テストプラン」トピックの22 個の TPC-H クエリステートメントをご参照ください。