Delta Lake では、delta. で始まる Delta テーブル プロパティが予約されます。 これらのプロパティには特定の意味があり、これらのプロパティが設定されている場合の動作に影響を与える可能性があります。
メモ
テーブル のプロパティを設定または更新するすべての操作は、他の同時書き込み操作と競合し、失敗します。 Databricks では、テーブル プロパティの修正は、そのテーブルで同時書き込み操作がないときにのみ行うことをお勧めします。
テーブルのプロパティと SparkSession プロパティはどのように連携するか
Delta テーブルのプロパティは、テーブルごとに設定されます。 テーブルにプロパティが設定されている場合、これは既定で従う設定です。
一部のテーブル プロパティには、SparkSession 構成が関連付けられており、それはテーブル プロパティよりも常に優先されます。 たとえば、spark.databricks.delta.autoCompact.enabled と spark.databricks.delta.optimizeWrite.enabled の構成などがあります。これにより、テーブル レベルではなく SparkSession レベルでの自動圧縮と最適化された書き込みが有効になります。 Databricks では、ほとんどのワークロードでテーブルスコープの構成を使用することをお勧めします。
Delta テーブル プロパティごとに、SparkSession 構成を使用して新しいテーブルの既定値を設定し、組み込みの既定値をオーバーライドできます。 この設定は、新しいテーブルにのみ影響し、既存のテーブルに設定されているプロパティはオーバーライドまたは置き換えられません。 次の表に示すように、SparkSession で使用されるプレフィックスは、テーブル プロパティで使用される構成とは異なります。
| Delta Lake 構成 | SparkSession 構成 |
|---|---|
delta.<conf> |
spark.databricks.delta.properties.defaults.<conf> |
たとえば、セッションで作成されるすべての新しい Delta Lake テーブルの delta.appendOnly = true プロパティを設定するには、次のように設定します。
SET spark.databricks.delta.properties.defaults.appendOnly = true
既存のテーブルのテーブル プロパティを変更するには、TBLPROPERTIES
Delta テーブル プロパティ
使用可能な Delta テーブルのプロパティは次のとおりです。
| プロパティ |
|---|
delta.appendOnlyこの Delta テーブルを追加専用にする場合は true。 追加専用の場合、既存のレコードを削除できず、既存の値を更新できません。「Delta テーブル プロパティのリファレンス」を参照してください。 データ型: Boolean既定値: false |
delta.autoOptimize.autoCompactDelta Lake でこの Delta テーブルのファイルのレイアウトが自動的に最適化されるようにする場合は auto。「Delta Lake on Azure Databricks の自動圧縮」を参照してください。 データ型: Boolean既定値: (なし) |
delta.autoOptimize.optimizeWriteDelta Lake が書き込み時にこの Delta テーブルのファイルレイアウトを自動的に最適化するために、 true。「Delta Lake on Azure Databricks の最適化された書き込み」を参照してください。 データ型: Boolean既定値: (なし) |
delta.checkpoint.writeStatsAsJsonDelta Lake でチェックポイント内に true 列に関するファイル統計を JSON 形式で書き込む場合は stats。データ型: Boolean既定値: true |
delta.checkpoint.writeStatsAsStructDelta Lake で、チェックポイントに true 列に関するファイル統計を構造体形式で書き込み、stats_parsed に関するパーティション値を構造体として書き込む場合はpartitionValues_parsed。データ型: Boolean既定値: true |
delta.checkpointPolicy従来の Delta Lake チェックポイントの classic。 v2 チェックポイントの v2。「リキッド クラスタリングありのテーブルの互換性」を参照してください。 データ型: String既定値: classic |
delta.columnMapping.modeDelta テーブルの列と、名前が異なっている対応する Parquet 列に対して、列マッピングを有効にするかどうか。 「Delta Lake の列マッピングを使用して列の名前変更と削除を行う」をご覧ください。 注: delta.columnMapping.mode を有効にすると、自動的に有効になりますdelta.randomizeFilePrefixes
データ型: DeltaColumnMappingMode既定値: none |
delta.dataSkippingNumIndexedColsDelta Lake が統計を収集する列数のうちデータ スキップに関するもの。 値 -1 は、すべての列に関する統計を収集することを意味します。「Delta Lake に対するデータのスキップ」を参照してください。 データ型: Int既定値: 32 |
delta.dataSkippingStatsColumnsDelta Lake がデータ スキップ機能を強化するために統計を収集する列名のコンマ区切りのリスト。 このプロパティは delta.dataSkippingNumIndexedCols よりも優先されます。「Delta Lake に対するデータのスキップ」を参照してください。 データ型: String既定値: (なし) |
delta.deletedFileRetentionDurationDelta Lake が論理的に削除されたデータ ファイルを物理的に削除する前に保持する最短時間。 これは、圧縮後またはパーティションの上書き後に古いリーダーで失敗が発生するのを防ぐためです。 この値は、次のことを保証するのに十分な大きさにする必要があります。
「タイム トラベル クエリのデータ保持を構成する」を参照してください。 データ型: CalendarInterval既定値: interval 1 week |
delta.enableChangeDataFeedデータ フィードの変更を有効にするには true。「データ フィードの変更を有効にする」を参照してください。 データ型: Boolean既定値: false |
delta.enableDeletionVectorstrue にすると、更新プログラムの削除ベクトルと予測 I/O が有効化されます。「削除ベクトルとは」を参照してください。 データ型: Boolean既定値: ワークスペース管理者の設定と Databricks Runtime のバージョンによって異なります。 「削除ベクトルの自動有効化」を参照してください |
delta.enableTypeWideningtrue を選択して、型拡大を有効にします。「タイプ拡張」を参照してください。 データ型: Boolean既定値: false |
delta.isolationLevel同時実行トランザクションで行われた変更からトランザクションを分離する必要がある度合い。 有効値は Serializable または WriteSerializable です。Azure Databricks での分離レベルと書き込みの競合に関するページを参照してください。 データ型: String既定値: WriteSerializable |
delta.logRetentionDurationDelta テーブルの履歴を保持する期間。 VACUUM 操作は、この保持しきい値をオーバーライドします。チェックポイントが書き込まれるたびに、Delta Lake によって、保持間隔より古いログ エントリが自動的にクリーンアップされます。 このプロパティを十分な大きさの値に設定すると、多くのログ エントリが保持されます。 これがパフォーマンスに影響しないのは、ログに対する操作が一定の時間であるからです。 履歴に対する操作は並列ですが、ログのサイズが増加するにつれてコストが高くなります。 「タイム トラベル クエリのデータ保持を構成する」を参照してください。 データ型: CalendarInterval既定値: interval 30 days |
delta.minReaderVersionこの Delta テーブルからの読み取りを許可するリーダーに必要な最小プロトコル リーダー バージョン。 Databricks では、このプロパティを手動で構成しないことをお勧めします。 Delta Lake の機能の互換性とプロトコルに関する記事を参照してください。 データ型: Int既定値: 1 |
delta.minWriterVersionこの Delta テーブルへの書き込みを許可するライターに必要な最小プロトコル ライター バージョン。 Databricks では、このプロパティを手動で構成しないことをお勧めします。 Delta Lake の機能の互換性とプロトコルに関する記事を参照してください。 データ型: Int既定値: 2 |
delta.randomizeFilePrefixesDelta Lake がパーティション情報の代わりにファイル パスのランダム プレフィックスを生成する場合は true。データ型: Boolean既定値: false |
delta.randomPrefixLengthdelta.randomizeFilePrefixes が true に設定されている場合に、Delta Lake が生成するランダム プレフィックスの文字数。データ型: Int既定値: 2 |
delta.setTransactionRetentionDuration新しいスナップショットがトランザクション識別子を保持する最も短い期間 (例: SetTransaction 秒)。 このプロパティで指定された期間以上のトランザクション識別子が新しいスナップショットにあると、スナップショットはこの識別子を期限切れであると見なして無視します。 この SetTransaction 識別子は、書き込みをべき等にする際に使用されます。 詳細については、「foreachBatch でのべき等テーブルの書き込み」を参照してください。データ型: CalendarInterval既定値: (なし) |
delta.targetFileSizeファイル チューニングのターゲットのファイル サイズ (バイト以上の単位)。 たとえば、次のように入力します。 104857600 (バイト) または 100mb。「データ ファイル サイズを制御するように Delta Lake を構成する」を参照してください。 データ型: String既定値: (なし) |
delta.tuneFileSizesForRewritesDelta テーブルのすべてのデータ レイアウト最適化操作で常に小さいファイル サイズを使用するには true。false はファイル サイズを低く調整しないようにし、つまり自動検出がアクティブ化されないようにします。「データ ファイル サイズを制御するように Delta Lake を構成する」を参照してください。 データ型: Boolean既定値: (なし) |
delta.parquet.compression.codec (Databricks Runtime 16.0 以降で使用できます)。Delta テーブルの圧縮コーデック。 ZSTD Zstandard (Zstd) 圧縮を Delta テーブルで使用するため。SNAPPY 差分テーブルで Snappy 圧縮を使用する。
データ型: String既定値: ZSTD |