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

Data Lake Formation:Paimon テーブル

最終更新日:Aug 08, 2026

Data Lake Formation (DLF) は、リアルタイムとバッチのストレージを統合するレイクハウスフォーマットである Paimon をサポートしています。このページでは、DLF 内の Paimon テーブルに対する次の 3 種類の操作について説明します:テーブルの作成、表示、および削除。

テーブルタイプ

DLF は 2 種類の Paimon テーブルタイプをサポートしています。データにプライマリキーがあるかどうか、および行単位のストリーム更新が必要かどうかに基づいて選択してください。

テーブルタイプ プライマリキー 最適な用途
プライマリキーテーブル 必須 ストリーム処理、リアルタイムでの挿入・更新・削除、プライマリキーによるフィルターが適用される OLAP クエリ
追加専用テーブル なし バッチ処理、行単位の更新を伴わないストリーム書き込み、ソートおよびビットマップ索引を使用した OLAP

フルマネージド Paimon テーブル

DLF で作成されたすべての Paimon テーブルはフルマネージドです。DLF がメタデータおよび基盤となるデータファイルをすべて管理します。テーブルを削除すると、両方が削除されます。

機能 機能の内容 自動管理対象か?
コンパクション 小規模ファイルをマージし、データ書き込みとは独立して実行することで安定した運用を実現 はい
同時書き込み 複数の書き込みジョブが同じパーティションに同時に書き込み可能 はい
パーティションレベルのメトリック パーティションごとのリアルタイム行数、ファイル数、ファイルサイズを追跡 はい
マルチバージョン(タイムトラベル) テーブル履歴を追跡し、詳細な挿入・更新・削除をサポート はい

DLF は、ユニバーサル一意識別子(UUID)から自動生成されたパスにデータを保存します。手動でのパス設定は不要です。

説明

DLF で作成された Paimon テーブルは、デフォルトで書き込み専用モードを使用します。バックグラウンド操作(コンパクション、スナップショットのクリーンアップ、パーティションのクリーンアップ)は DLF によって自動的に処理されます。

前提条件

作業を開始する前に、以下の条件を満たしていることを確認してください。

Paimon テーブルの作成

コンソールからの作成

  1. Data Lake Formation コンソールにログインします。

  2. データカタログの一覧ページで、カタログ名をクリックします。

  3. データベースの一覧で、データベース名をクリックしてテーブル一覧を開きます。

  4. テーブル一覧で、[テーブルの作成] をクリックします。

  5. 以下の設定項目を構成し、[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 バケットを目標としてください。

動的バケット化と自動スケーリング

システムは以下の 6 つの要因に基づいてバケット割り当てを調整します。

要因 バケット数への影響
パーティション全体のストレージ量 ファイル総サイズが大きいほど → バケット数が増加
データレコード規模 削除ベクターが有効な場合、行数が多いほど → バケット数が増加
書き込みトラフィック負荷 書き込みスループットが高いほど → ボトルネックを防ぐためにバケット数が増加
データ分布の偏り 偏りが検出された場合 → 均等な分散のためにバケット数が増加
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. データベースの一覧で、データベース名をクリックしてテーブル一覧を開きます。

  2. テーブル一覧で、テーブル名をクリックしてフィールドを表示します。

  3. [テーブルの詳細] タブをクリックして、テーブルの基本情報、フィールド一覧、およびパーティション一覧を確認します。

    説明

    [テーブルの詳細] タブでは、パーティション化テーブルおよび非パーティション化テーブルの両方について、ストレージクラスを手動で変更できます。詳細については、「ストレージクラスの手動変更」をご参照ください。

  4. [権限] タブをクリックして、ユーザーまたはロールにテーブルレベルの権限を付与します。詳細については、「データ権限付与管理」をご参照ください。

データテーブルの削除

警告

テーブルを削除すると、メタデータとデータの両方が削除されます。誤って削除した場合に備えて、データは 1 日間保持されます。1 日経過後、データは完全に削除されます。

  1. データベースの一覧で、データベース名をクリックしてテーブル一覧を開きます。

  2. テーブル一覧で、[操作] 列の [削除] をクリックします。

  3. ダイアログボックスで、[OK] をクリックします。

削除されたデータテーブルは、メタデータ保持期間中に復元できます。詳細については、「ごみ箱」をご参照ください。