このトピックでは、Data Lake Formation (DLF) における Paimon テーブルの基本操作について説明します。
テーブルタイプの概要
特徴 | Paimon テーブルは、リアルタイム処理とオフライン処理を統合したレイクハウス形式を採用しており、コンピュートエンジンおよびオープンソース API を使用してデータの効率的な読み取り・書き込みが可能です。 |
シナリオ | ストリーム処理、リアルタイム更新、および高性能オンライン分析処理(OLAP)クエリ。 |
データ管理 | メタデータおよび実際のデータファイルを含むすべてのデータは、DLF によって完全に管理されます。テーブルを削除すると、メタデータとデータの両方が削除されます。 |
ストレージシステム | データストレージパスは、普遍的固有識別子(UUID)に基づき DLF が自動生成します。ストレージパスを手動で指定する必要はありません。 |
削除時の動作 | テーブルを削除すると、誤削除のリスクを低減するため、デフォルトでデータは 1 日間保持されます。その後、データは完全に削除されます。 |
完全マネージド型 Paimon テーブルは、以下の機能を提供します:
データ書き込みから完全に分離された完全マネージド型コンパクションにより、より安定した運用を実現します。
同一テーブルの同一パーティションに対して、複数の書き込みジョブが同時並行で書き込むことをサポートします。
パーティション単位のリアルタイムメトリック(例:行数、ファイル数、ファイルサイズ)を提供します。
タイムトラベルおよび細かい粒度での挿入(insert)、更新(update)、削除(delete)操作を可能にするマルチバージョン機構を備えています。
データテーブルの作成
データカタログ一覧ページで、カタログ名をクリックしてカタログ詳細ページへ移動します。
データベース一覧からデータベース名をクリックし、テーブル一覧ページへ移動します。
テーブル一覧から テーブルの作成 をクリックします。
以下の情報を設定し、OK をクリックします。
設定項目
説明
テーブルフォーマット
Paimon テーブル を選択します。
データテーブル名
必須項目です。データベース内で一意である必要があります。
データテーブルの説明
任意項目です。説明文を入力してください。
カラム
テーブル内のカラム情報を定義します。カラム名、プライマリキーの有無、NOT NULL の有無、パーティションフィールドの有無、データの型、長さ/型、説明、および操作を含みます。
カスタムテーブルプロパティ
カスタムプロパティを追加します。これらのプロパティは、テーブル作成時に DLF メタサービスのデフォルトパラメーターを上書きします。適用可能な設定項目の一覧については、「公式 Paimon ドキュメント」をご参照ください。
PARQUET、AVRO、ORC、CSV、TEXT、JSON、LANCE、BLOB など、複数の基盤ファイル形式をサポートしています。
例:
file.format = LANCE
説明DLF で作成された Paimon テーブルは、デフォルトで「書き込み専用(write-only)」モードを使用します。つまり、コンパクション、スナップショットのクリーンアップ、パーティションのクリーンアップなどのバックグラウンドテーブル最適化操作は、DLF が自動的に処理します。
SQL の例
DLF で作成された Paimon テーブルは、プライマリキーテーブルおよび追加専用(append-only)テーブルの両方をサポートします。EMR や Flink などの他のプラットフォームで既にカタログを関連付けている場合、そのプラットフォーム上でデータベースおよびテーブルを作成することも可能です。メタデータは直接 DLF に書き込まれます。詳細については、「エンジン統合」をご参照ください。
プライマリキーテーブル
このテーブルタイプは、プライマリキーを一意の識別子として使用し、ストリームデータ処理のシナリオ向けに設計されています。テーブル内のレコードに対して リアルタイム更新、挿入、削除を実行できます。また、ダウンストリームシステムがストリームとして消費できる正確な変更ログを自動的に生成します。さらに、プライマリキー条件に基づく 効率的なデータクエリをサポートします。
Flink SQL の例
CREATE TABLE orders ( order_id BIGINT, price BIGINT, customer STRING, PRIMARY KEY NOT ENFORCED(order_id) );Spark SQL の例
CREATE TABLE orders ( order_id BIGINT, price BIGINT, customer STRING ) TBLPROPERTIES ( 'primary-key' = 'order_id' );
DLF プロダクトはデフォルトで Postpone Bucket モードを使用します。このアダプティブなバケット割り当て戦略では、パーティションのデータ量に応じてバケット数を動的に調整します。これにより、バケット数が多すぎることによる読み取りパフォーマンスの低下や、少なすぎることによる書き込みパフォーマンスの問題を防止します。このインテリジェントなメカニズムにより、バケット構成を意識する必要はありません。ただし、Postpone モードではデータ遅延が発生します。新しく書き込まれたデータは、コンパクションが完了するまで可視化されません。
遅延を回避するには、以下の対策を講じてください:
Flink(VVR 11.4 以降)または Spark(esr-4.5 以降)を使用します。Postpone モードでは、新バージョンがバッチ単位で直接バケットに書き込まれるため、遅延が解消されます。
遅延の影響を受けやすいテーブルの場合、バケット数を明示的に設定します。例:
'bucket' = '5'。パーティションあたりのデータ量が 1 GB の場合、1 バケットを推奨します。
システムは、データの特性およびトラフィック負荷に応じてバケット数を動的に調整し、ストレージ効率および読み取り・書き込みパフォーマンスを確保するために、適切なタイミングでスケーリング操作を実行します。これらのスケーリングポリシーについて詳しくは、以下のポリシー説明をご確認ください。
動的バケット分割および自動スケーリングポリシー
その他のビジネス関連の構成については、以下を定義できます:
merge-engine を設定して、より複雑な計算を実行します。
削除ベクター(deletion-vectors.enabled) を有効化して、クエリパフォーマンスを大幅に向上させます。
説明この機能を有効化すると、バケットモードの種類に関係なく、新しく書き込まれたデータはコンパクション完了後のみ可視化されます。
changelog-producer を 'lookup' に設定して、ダウンストリームのストリーム読み取り用に変更ログを生成します。
sequence.field を設定して、順序外(out-of-order)のシナリオに対応し、正しい更新順序を保証します。
上流のデータが Change Data Capture(CDC)データである場合、Flink CDC またはデータ統合製品を使用してデータをデータレイクに更新します。これにより、完全なデータベース同期、自動テーブル作成、およびスキーマ同期などの機能を提供します。
プライマリキーテーブルで OLAP エンジンによる高性能クエリを実現したい場合は、「削除ベクター」モードの有効化を強く推奨します。コンパクションリソースの消費は増加しますが、より安定かつ高性能な OLAP クエリを実現できます。
追加専用(append-only)テーブル
テーブルに プライマリキーがない場合、追加専用(append-only)テーブルと呼ばれます。プライマリキーテーブルとは異なり、追加専用テーブルはストリームによる直接更新をサポートしませんが、バッチ処理パフォーマンスははるかに優れています。
ストリーム書き込みおよびストリーム読み取りをサポートします。DLF バックエンドは小規模ファイルを自動的にマージし、低い計算コストでデータのタイムリネスを向上させます。
細かい粒度でのデータ操作(
DELETE、UPDATE、MERGE INTO)をサポートします。また、バージョン管理およびタイムトラベル機能を提供し、多様なビジネス要件に対応します。ソートおよびビットマップの定義により、クエリを高速化します。OLAP エンジンは直接読み取りに対して優れたパフォーマンスを発揮します。
ほとんどのバッチ処理シナリオ、またはプライマリキーのないストリーム処理シナリオでは、追加専用テーブルの使用を推奨します。プライマリキーテーブルと比較して、追加専用テーブルはシンプルで使いやすく、効率的なデータ書き込みおよびクエリ要件を十分に満たします。
Flink SQL の例
CREATE TABLE orders ( order_id BIGINT, price BIGINT, customer STRING );Spark SQL の例
CREATE TABLE orders ( order_id BIGINT, price BIGINT, customer STRING );
データテーブルの表示
データベース一覧からデータベース名をクリックし、そのテーブル一覧を表示します。
テーブル一覧からテーブル名をクリックし、フィールドを表示します。
テーブル詳細 タブをクリックして、データテーブルの基本情報、フィールド一覧、およびパーティション一覧を表示します。
説明テーブル詳細 タブでは、パーティションあり/なしの両方のテーブルについて、ストレージクラスを手動で変更できます。詳細については、「ストレージクラスの手動変更」をご参照ください。
権限 タブをクリックして、ユーザーまたはロールにテーブル関連の権限を付与します。詳細については、「データ権限管理」をご参照ください。
データテーブルの削除
テーブル を削除すると、誤ったデータ損失を防ぐため、デフォルトでデータは 1 日間保持されます。この 1 日の期間が経過すると、データは完全に削除されます。
データベース一覧からデータベース名をクリックし、テーブル一覧を表示します。
テーブル一覧の [操作] 列から 削除 をクリックします。
表示されるダイアログボックスで、OK をクリックしてテーブルを削除します。