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 を手動で有効にすることができます。