このトピックでは、Data Lake Formation (DLF) における Paimon テーブルの基本操作について説明します。
テーブルタイプの概要
特徴 | Paimon テーブルは、リアルタイムとオフラインの統合ストレージをサポートするレイクハウスフォーマットを使用します。コンピュートエンジンとオープンソース API を使用して、これらのテーブルから効率的に読み書きできます。 |
シナリオ | ストリーム処理、リアルタイム更新、およびハイパフォーマンスなオンライン分析処理 (OLAP) クエリ。 |
データ管理 | DLF は、メタデータと実際のデータファイルを含むデータを完全に管理します。テーブルを削除すると、メタデータとデータの両方が削除されます。 |
ストレージシステム | DLF は、Universally Unique Identifier (UUID) に基づいてデータストレージパスを自動的に生成します。ストレージパスを手動で指定する必要はありません。 |
削除の動作 | テーブルを削除すると、誤削除のリスクを軽減するために、データはデフォルトで 1 日間保持されます。1 日後、データは完全に削除されます。 |
フルマネージドの Paimon テーブルは、次の特徴を提供します:
データ書き込みから完全に分離されたフルマネージドのコンパクションにより、より安定した操作が保証されます。
複数の書き込みジョブがテーブルの同じパーティションに同時に書き込むことをサポートします。
行数、ファイル数、サイズなどのリアルタイムのパーティションレベルのメトリック。
タイムトラベルと詳細な挿入、更新、削除操作をサポートするマルチバージョンメカニズム。
データテーブルの作成
DLF コンソールにログインします。
[Data Catalog] ページで、カタログ名をクリックして詳細ページを開きます。
[Database] リストで、データベース名をクリックしてテーブルのリストを表示します。
[Table List] で、[Create Table] をクリックします。
次のパラメーターを設定し、[OK] をクリックします。
設定項目
説明
テーブルフォーマット
Paimon Table を選択します。
テーブルデータベース名
必須。名前はデータベース内で一意である必要があります。
データテーブルの説明
任意。説明を入力します。
列
テーブルの列を定義します。これには、列名、プライマリキーであるかどうか、null にできるかどうか、パーティションフィールドであるかどうか、データの型、長さ/型、説明、および操作が含まれます。
カスタムテーブルプロパティ
カスタムプロパティを追加できます。作成中、これらのプロパティは DLF メタデータサービスの対応するデフォルトパラメーターを上書きします。適用可能な設定項目の詳細については、「Paimon の公式ドキュメント」をご参照ください。
説明DLF で作成された Paimon テーブルは、デフォルトで「write-only」モードを使用します。これは、コンパクション、スナップショットのクリーンアップ、パーティションのクリーンアップなどのバックグラウンドテーブル最適化操作が、DLF バックグラウンドサービスによって自動的に実行されることを意味します。
SQL の例
DLF で作成された Paimon テーブルは、プライマリキーテーブルと追記専用テーブルをサポートします。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 (Ververica Runtime (VVR) 11.4+) または Spark (esr-4.5+) を使用します。Postpone モードでは、新しいバージョンはバッチを直接バケットに書き込むため、遅延がなくなります。
遅延の影響を受けやすいテーブルの場合は、バケット数を明示的に設定します。例:
'bucket' = '5'。パーティションデータ 1 GB ごとに 1 つのバケットを推奨します。
その他のビジネス関連の設定については、次を定義できます:
より複雑な計算を実行するための マージエンジン (merge-engine)。
削除ベクター (deletion-vectors.enabled) を使用して、クエリパフォーマンスを大幅に向上させます。
説明この機能が有効になると、バケットモードの種類に関係なく、新しく書き込まれたすべてのデータはコンパクション後にのみ表示されます。
下流のストリーム読み取り用の変更ログを生成するために 'lookup' に設定された 変更ログプロデューサー (changelog-producer)。
順序が乱れたシナリオを処理し、正しい更新シーケンスを保証するための シーケンスフィールド (sequence.field)。
上流のソースが Change Data Capture (CDC) データである場合、Flink CDC またはデータ統合プロダクトを使用してデータをレイクに書き込むことができます。これにより、完全なデータベース同期、自動テーブル作成、テーブルスキーマ同期などの機能が提供されます。
OLAP エンジンでプライマリキーテーブルに対してハイパフォーマンスなクエリを実行する場合、「deletion vectors」モードを有効にすることを強くお勧めします。このモードはより多くのコンパクションリソースを消費しますが、より安定したハイパフォーマンスな OLAP クエリを提供します。
追記専用テーブル
テーブルにプライマリキーが定義されていない場合、それは追記専用テーブルです。プライマリキーテーブルとは異なり、追記専用テーブルは直接のストリーム更新をサポートしませんが、そのバッチ処理パフォーマンスははるかに優れています。
ストリーム書き込みとストリーム読み取りをサポートします。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 );
データテーブルの表示
[Database] リストで、データベース名をクリックしてテーブルのリストを表示します。
[Table List] で、テーブル名をクリックして詳細を表示します。
[Table Details] タブをクリックして、テーブルの基本情報、フィールドリスト、パーティションリストを表示します。
説明[Table Details] タブでは、パーティションテーブルと非パーティションテーブルのストレージクラスを手動で変更できます。詳細については、「ストレージクラスの手動変更」をご参照ください。
[Permissions] タブをクリックして、ユーザーまたはロールにテーブル権限を付与します。詳細については、「データ権限管理」をご参照ください。
データテーブルの削除
テーブルが削除された後、システムは誤削除のリスクを軽減するために、デフォルトでテーブルデータを 1 日間保持します。1 日後、データは完全に削除されます。
[Database] リストで、データベース名をクリックしてテーブルのリストを表示します。
[Table List] で、[操作] 列の [削除] をクリックします。
表示されるダイアログボックスで、[OK] をクリックしてデータテーブルを削除します。