バリアントシュレッディングを使用してパフォーマンスを最適化する
ベータ版
この機能はベータ版です。ワークスペース管理者は、 プレビュー ページからこの機能へのアクセスを制御できます。Databricksのプレビューを管理するを参照してください。
バリアントシュレッディングは、一般的に発生するフィールドを基盤となるParquetファイルに個別の列として保存することで、VARIANT列のクエリパフォーマンスを向上させます。シュレッディングにより、フィールドの読み取りに必要なI/Oが削減され、バイナリBLOBの代わりに列形式を使用することで圧縮が向上します。
VARIANT 型、Apache Iceberg および Delta Lake のバリアント型サポート、および バリアントデータのクエリを参照してください。
要件
シャーディングされたVARIANTテーブルを読み書きするには、Databricks Runtime 17.2以降が必要です。
シュレッディングを有効にする
ワークスペース管理者は、ワークスペースの**プレビュー**ページからシュレッディングを有効にできます。「Databricks プレビューの管理」を参照してください。
シュレッディングを使用して VARIANT データの読み取りまたは書き込みにコードを変更する必要はありません。
ワークスペースでこの機能を有効にすると、シュレッディングは、次のシナリオでテーブルで自動的に有効になります。
CREATE TABLE1 つ以上のVARIANTカラムでCREATE AND REPLACE TABLE1 つ以上のVARIANTカラムでALTER TABLEVARIANT列を 1つ以上追加する場合
既存のテーブルの場合、ワークスペースレベルでシュレッディングが有効になっていることを条件に、enableVariantShreddingテーブルプロパティをtrueに設定して手動でシュレッディングを有効にし、プロパティをfalseに設定して無効にすることができます。
- Delta Lake table
- Iceberg table
ALTER TABLE my_table SET TBLPROPERTIES ('delta.enableVariantShredding' = 'true');
ALTER TABLE my_table SET TBLPROPERTIES ('iceberg.enableVariantShredding' = 'true');
テーブルプロパティenableVariantShreddingがtrueに設定されていることを確認して、シュレッディングが有効になっていることを確認します。
特定のテーブルのシュレッディングをオプトアウトする
ワークスペースのシュレッディングベータ版を有効にし、特定のテーブルを除外する場合は、enableVariantShredding テーブルプロパティをfalseに設定します:
- Delta Lake table
- Iceberg table
ALTER TABLE my_table SET TBLPROPERTIES ('delta.enableVariantShredding' = 'false');
ALTER TABLE my_table SET TBLPROPERTIES ('iceberg.enableVariantShredding' = 'false');
既存のテーブルからシュレッディングを削除する
既存のテーブルのシュレッディングを削除するには、 ALTER TABLE コマンドでフィーチャーをドロップします。また、この操作では、シュレッディングされた VARIANT データをシュレッドされていない VARIANT 形式に書き換え、 enableVariantShredding テーブルプロパティをfalseに設定します。
ALTER TABLE my_table DROP FEATURE "variantShredding-preview";
制限事項:
- データをシュレッディングすると、書き込みにオーバーヘッドが発生します。
- シュレッディングを有効にしても、テーブル内の既存の
VARIANTデータは自動的に変換されません。これは、機能が有効になった後に書き込まれたデータにのみ適用されます。既存のVARIANTデータを書き換えるには、REORG TABLE my_table APPLY (SHRED VARIANT)を使用します。 - シュレッディングは、構造体の最上位の
VARIANT列またはVARIANTフィールドに適用され、配列またはマップ内に格納されているVARIANTデータは除外されます。