Data Lake Formation (DLF) は、リアルタイムとバッチのストレージを統合するレイクハウスフォーマットである Paimon をサポートしています。このページでは、DLF 内の Paimon テーブルに対する次の 3 種類の操作について説明します:テーブルの作成、表示、および削除。
テーブルタイプ
DLF は 2 種類の Paimon テーブルタイプをサポートしています。データにプライマリキーがあるかどうか、および行単位のストリーム更新が必要かどうかに基づいて選択してください。
| テーブルタイプ | プライマリキー | 最適な用途 |
|---|---|---|
| プライマリキーテーブル | 必須 | ストリーム処理、リアルタイムでの挿入・更新・削除、プライマリキーによるフィルターが適用される OLAP クエリ |
| 追加専用テーブル | なし | バッチ処理、行単位の更新を伴わないストリーム書き込み、ソートおよびビットマップ索引を使用した OLAP |
フルマネージド Paimon テーブル
DLF で作成されたすべての Paimon テーブルはフルマネージドです。DLF がメタデータおよび基盤となるデータファイルをすべて管理します。テーブルを削除すると、両方が削除されます。
| 機能 | 機能の内容 | 自動管理対象か? |
|---|---|---|
| コンパクション | 小規模ファイルをマージし、データ書き込みとは独立して実行することで安定した運用を実現 | はい |
| 同時書き込み | 複数の書き込みジョブが同じパーティションに同時に書き込み可能 | はい |
| パーティションレベルのメトリック | パーティションごとのリアルタイム行数、ファイル数、ファイルサイズを追跡 | はい |
| マルチバージョン(タイムトラベル) | テーブル履歴を追跡し、詳細な挿入・更新・削除をサポート | はい |
DLF は、ユニバーサル一意識別子(UUID)から自動生成されたパスにデータを保存します。手動でのパス設定は不要です。
DLF で作成された Paimon テーブルは、デフォルトで書き込み専用モードを使用します。バックグラウンド操作(コンパクション、スナップショットのクリーンアップ、パーティションのクリーンアップ)は DLF によって自動的に処理されます。
前提条件
作業を開始する前に、以下の条件を満たしていることを確認してください。
-
Data Lake Formation コンソールへのアクセス権限
-
DLF 内に既存のカタログおよびデータベースが存在すること
Paimon テーブルの作成
コンソールからの作成
-
Data Lake Formation コンソールにログインします。
-
データカタログの一覧ページで、カタログ名をクリックします。
-
データベースの一覧で、データベース名をクリックしてテーブル一覧を開きます。
-
テーブル一覧で、[テーブルの作成] をクリックします。
-
以下の設定項目を構成し、[OK] をクリックします。
構成項目 説明 テーブルフォーマット Paimon テーブル を選択します。 データテーブル名 必須項目です。データベース内で一意である必要があります。 データテーブルの説明 任意項目です。 カラム 各カラムについて、名前、プライマリキーフラグ、NOT NULL フラグ、パーティションフィールドフラグ、データの型、長さ/型、および説明を定義します。 カスタムテーブルプロパティ テーブル作成時に DLF のデフォルトメタサービスパラメーターを上書きするプロパティを追加します。利用可能なオプションについては、公式 Paimon ドキュメントをご参照ください。サポートされているファイル形式:PARQUET、AVRO、ORC、CSV、TEXT、JSON、LANCE、および BLOB。例: file.format = LANCE。
SQL からの作成
Flink、EMR(E-MapReduce)、または他のプラットフォーム上でカタログを関連付けている場合は、これらのプラットフォーム上で直接テーブルを作成できます。メタデータは DLF に直接書き込まれます。詳細については、「エンジン統合」をご参照ください。
プライマリキーテーブル
プライマリキーテーブルは、プライマリキーを一意の行識別子として使用します。リアルタイムでの挿入・更新・削除をサポートし、ダウンストリームのストリームコンシューマー向けに変更ログを自動生成します。ストリームデータ処理およびプライマリキーでフィルターされたオンライン分析処理(OLAP)クエリにこのテーブルタイプを使用してください。
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'
);
バケット割り当て(Postpone Bucket モード)
DLF はデフォルトで Postpone Bucket モードを使用します。この適応型戦略により、パーティションのデータ量に基づいてバケット数を動的に調整し、バケット数が多すぎることによる読み取りパフォーマンスの低下や、少なすぎることによる書き込みボトルネックを回避します。
Postpone モードにおけるデータの可視性: 新しく書き込まれたデータは、コンパクションが完了するまで可視になりません。この遅延を解消するには、以下のいずれかの方法を採用してください。
-
Flink(VVR 11.4 以降)または Spark(esr-4.5 以降)を使用します。これらのバージョンでは、バッチを直接バケットに書き込むため、遅延が発生しません。
-
遅延の影響を受けやすいテーブルについては、明示的にバケット数を設定します。例:
'bucket' = '5'。パーティションデータ 1 GB あたり 1 バケットを目標としてください。
動的バケット化と自動スケーリング
高度な構成
プライマリキーテーブルに対して、以下の Paimon オプションを構成して追加のチューニングが可能です。
-
マージエンジン:コンパクション中に複雑な計算のためのカスタムマージロジックを定義します。
-
削除ベクター(
deletion-vectors.enabled = true):クエリパフォーマンスを大幅に向上させます。有効化後は、バケットモードに関係なく、新しく書き込まれたデータはコンパクション完了後にのみ可視になります。これによりコンパクションリソースの消費が増えますが、より安定したクエリパフォーマンスを実現します。 -
チェンジログプロデューサー(
changelog-producer = 'lookup'):ダウンストリームのストリーム読み取り向けに完全な変更ログを生成します。 -
シーケンスフィールド:順序外データを処理し、正しい更新シーケンスを保証します。
アップストリームデータが Change Data Capture(CDC)データの場合、Flink CDC または Data Integration プロダクトを使用して DLF にデータをロードしてください。これらのツールは、完全データベース同期、自動テーブル作成、スキーマ同期をサポートしています。
高性能な OLAP クエリを実行するには、削除ベクターモードを有効にしてください。コンパクションリソースの消費は増えますが、より安定かつ高性能な 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
);
データテーブルの表示
-
データベースの一覧で、データベース名をクリックしてテーブル一覧を開きます。
-
テーブル一覧で、テーブル名をクリックしてフィールドを表示します。
-
[テーブルの詳細] タブをクリックして、テーブルの基本情報、フィールド一覧、およびパーティション一覧を確認します。
説明[テーブルの詳細] タブでは、パーティション化テーブルおよび非パーティション化テーブルの両方について、ストレージクラスを手動で変更できます。詳細については、「ストレージクラスの手動変更」をご参照ください。
-
[権限] タブをクリックして、ユーザーまたはロールにテーブルレベルの権限を付与します。詳細については、「データ権限付与管理」をご参照ください。
データテーブルの削除
テーブルを削除すると、メタデータとデータの両方が削除されます。誤って削除した場合に備えて、データは 1 日間保持されます。1 日経過後、データは完全に削除されます。
-
データベースの一覧で、データベース名をクリックしてテーブル一覧を開きます。
-
テーブル一覧で、[操作] 列の [削除] をクリックします。
-
ダイアログボックスで、[OK] をクリックします。
削除されたデータテーブルは、メタデータ保持期間中に復元できます。詳細については、「ごみ箱」をご参照ください。