メインコンテンツまでスキップ

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を有効にするには:

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

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

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

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

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

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

Parquet v1にロールバックする

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

SQL
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 を手動で有効にできます。