Parquet 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を有効にする
Databricksは、互換性のあるUnity CatalogマネージドテーブルをParquet v2に自動的にアップグレードします。自動アップグレードを参照してください。
Parquet v2を手動で有効にするには、テーブルタイプに応じた適切なプレフィックスを使用して、parquet.format.versionテーブルプロパティを2.12.0に設定します。手動で有効にする前に、制限を確認してください。
既存のテーブルでParquet v2を有効にするには:
- Delta Lake
- Iceberg
ALTER TABLE <table_name> SET TBLPROPERTIES ('delta.parquet.format.version' = '2.12.0');
ALTER TABLE <table_name> SET TBLPROPERTIES ('iceberg.parquet.format.version' = '2.12.0');
新しいテーブルでParquet v2を有効にするには:
- Delta Lake
- Iceberg
CREATE TABLE <table_name> (...)
TBLPROPERTIES ('delta.parquet.format.version' = '2.12.0');
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エンコードにロールバックするには、SET PARQUETオプションを指定してREORG TABLEを実行します。
REORG TABLE <table_name> APPLY (SET PARQUET (FORMAT_VERSION = '1.0.0'));
このコマンドは、v1 エンコーディングを使用してすべてのデータ ファイルを書き換え、delta.parquet.format.version テーブル プロパティを 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 を手動で有効にできます。