パーケット v2

Databricks Runtime 18.1 以降で使用できる Parquet v2 では、高度なエンコード、v2 データ ページ ヘッダー、および INT64 タイムスタンプを使用して、クエリのパフォーマンスが向上し、Delta Lake テーブルと Apache Iceberg テーブルのストレージが削減されます。

Parquet v2 のしくみ

Parquet v2 では、ストレージを削減し、読み取りパフォーマンスを向上させる、データ ファイル形式の機能強化が導入されています。

  • 高度なエンコード: 整数列と文字列列では、Parquet v1 で使用されるエンコードと比較して、より効率的な圧縮とデコードで 新しい エンコードが使用されます。
  • V2 データ ページ ヘッダー: ページ レベルの統計とインデックスにより、述語のプッシュダウンとデータスキップが向上し、クエリ時にスキャンされるデータの量が減ります。
  • INT64 タイムスタンプ: INT64 タイムスタンプは、従来の INT96 タイムスタンプを置き換え、列統計を改善し、タイムスタンプのエンコードと圧縮を行います。

Parquet v2 を有効にする

Azure Databricks互換性のある Unity カタログマネージド テーブルが Parquet v2 に自動的にアップグレードされます。 自動アップグレードを参照してください。

Parquet v2 を手動で有効にするには、テーブルの種類に適したプレフィックスを使用してparquet.format.version2.12.0テーブル プロパティを設定します。 手動で有効にする前に、 制限事項を確認してください。

既存のテーブルで Parquet v2 を有効にするには:

デルタ湖

ALTER TABLE <table_name> SET TBLPROPERTIES ('delta.parquet.format.version' = '2.12.0');

Iceberg

ALTER TABLE <table_name> SET TBLPROPERTIES ('iceberg.parquet.format.version' = '2.12.0');

新しいテーブルで Parquet v2 を有効にするには:

デルタ湖

CREATE TABLE <table_name> (...)
TBLPROPERTIES ('delta.parquet.format.version' = '2.12.0');

Iceberg

CREATE TABLE <table_name> (...)
USING iceberg
TBLPROPERTIES ('iceberg.parquet.format.version' = '2.12.0');

プロパティを設定した後、後続のすべての書き込みでは v2 エンコードが使用されます。 Parquet v1 ファイルと v2 ファイルは、同じテーブル内に共存できます。 既存のデータ ファイルは自動的に書き換えられません。 Delta Lake テーブルの場合、既存のファイルを v2 に書き換える場合は、Databricks Runtime 18.2 以降の REORG TABLE を使用します。

REORG TABLE <table_name> APPLY (SET PARQUET (FORMAT_VERSION = '2.12.0'));

完全な テーブル プロパティリファレンス については、「テーブルプロパティリファレンス」を参照してください。

Parquet v1 にロールバックする

Databricks Runtime 18.2 以降では、個々のテーブルを v1 エンコードにロールバックするには、REORG TABLE オプションを使用してSET PARQUETを実行します。

REORG TABLE <table_name> APPLY (SET PARQUET (FORMAT_VERSION = '1.0.0'));

このコマンドは、v1 エンコードを使用してすべてのデータ ファイルを書き換え、 delta.parquet.format.version table プロパティを 1.0.0にリセットします。

完全なREORG TABLE構文については、REORG TABLEを参照してください。

制限事項

Parquet v2 には、次の制限があります。

  • 外部エンジンの場合、一部の Apache Iceberg リーダーは Iceberg テーブルの Parquet v2 をサポートしていない場合があります。 Iceberg テーブルで Parquet v2 を有効にする前に、Iceberg リーダーに互換性があることを確認する必要があります。
  • OpenSharing の場合、Parquet v2 を有効にする前に、OpenSharing 受信者のリーダー クライアントが Parquet v2 エンコードをサポートしていることを確認します。
  • 具体化されたビューとストリーミング テーブルは、Parquet v2 に自動的にアップグレードされません。 Databricks Runtime 18.1 以降では、これらのテーブルの種類で Parquet v2 を手動で有効にすることができます。