Tablo özellikleri kaynağı

Delta Lake ve Apache Iceberg tabloları veri düzeni, dosya boyutu, veri atlama, yalıtım düzeyi ve veri akışını değiştirme gibi davranış ve özellikleri yapılandırmak için tablo özelliklerini kullanır.

Note

Tablo özelliklerini ayarlayan veya güncelleştiren tüm işlemler diğer eşzamanlı yazma işlemleriyle çakışarak bunların başarısız olmasına neden olur. Databricks, tablo özelliğini yalnızca tabloda eşzamanlı yazma işlemi olmadığında değiştirmenizi önerir.

Tablo özelliklerini değiştirme

Varolan tabloların tablo özelliklerini değiştirmek için SET TBLPROPERTIESkullanın.

Delta ve Iceberg özellik ön ekleri

Delta Lake ve Apache Iceberg tabloları aynı tablo özellik adlarını paylaşır, ancak farklı ön ekler gerektirir:

  • Delta Lake tabloları: Ön ekini delta. kullanın
  • Iceberg tabloları: Ön ekini iceberg. kullanın

Örneğin, bir tabloda silme vektörlerini etkinleştirmek için:

Delta Gölü

ALTER TABLE <table-name> SET TBLPROPERTIES ('delta.enableDeletionVectors' = true);

Buzdağı tablosu

ALTER TABLE <table-name> SET TBLPROPERTIES ('iceberg.enableDeletionVectors' = true);

Tablo özellikleri ve SparkSession özellikleri

Her tablonun davranışını denetleyebilen kendi tablo özellikleri vardır. Bazı SparkSession yapılandırmalar her zaman tablo özelliklerini geçersiz kılar. Örneğin, autoCompact.enabledoptimizeWrite.enabled otomatik sıkıştırmayı ve iyileştirilmiş yazmaları SparkSession düzeyinde etkinleştirin. Databricks, çoğu iş yükü için tablo kapsamlı yapılandırmaların kullanılmasını önerir.

Yapılandırmaları kullanarak SparkSession yeni tablolar için varsayılan değerleri ayarlayabilirsiniz. Bu varsayılanlar yalnızca yeni tablolar için geçerlidir ve mevcut tablo özelliklerini etkilemez. SparkSession yapılandırmaları, aşağıdaki tabloda gösterildiği gibi tablo özelliklerinden farklı bir ön ek kullanır:

Tablo özelliği SparkSession konfigürasyon
delta.<conf>
iceberg.<conf>
spark.databricks.delta.properties.defaults.<conf>
spark.databricks.iceberg.properties.defaults.<conf>

Örneğin, bir oturumda oluşturulan tüm yeni tabloların appendOnly = true özelliğini ayarlamak için aşağıdakileri ayarlayın:

Delta Gölü

SET spark.databricks.delta.properties.defaults.appendOnly = true

Buzdağı tablosu

SET spark.databricks.iceberg.properties.defaults.appendOnly = true

Tablo özellikleri

Aşağıdaki tablo özelliklerinin çoğu, belirtilen durumlar dışında hem Delta Lake hem de Apache Iceberg tablolarında kullanılabilir. delta. Delta Lake tabloları için ön eki ve iceberg. Iceberg tabloları için ön eki kullanın.

Mülkiyet Description
autoOptimize.optimizeWrite true yazma işlemleri sırasında bu tablonun dosyalarının düzenini otomatik olarak iyileştirmek için.
Bkz. İyileştirilmiş yazma işlemleri.
Veri tipi: Boolean
Varsayılan: (yok)
dataSkippingNumIndexedCols Verilerin atlanmasıyla ilgili istatistiklerin toplanması gereken sütun sayısı. Değeri -1 , tüm sütunlar için istatistik toplama anlamına gelir.
Bkz. Veri atlama.
Veri tipi: Int
Varsayılan: 32
dataSkippingStatsColumns Veri atlama işlevselliğini geliştirmek için istatistiklerin toplandığı sütun adlarının virgülle ayrılmış listesi. Bu özellik üzerinde dataSkippingNumIndexedColsönceliklidir.
Bkz. Veri atlama.
Veri tipi: String
Varsayılan: (yok)
deletedFileRetentionDuration Mantıksal olarak silinen veri dosyalarını fiziksel olarak silmeden önce saklamak için en kısa süre. Bu, sıkıştırmalar veya bölüm üzerine yazıldıktan sonra eski okuyucularda hataları önler.
Databricks varsayılan değer olan 7 gün veya üzerini önerir. Bekletme süreniz çok kısaysa, uzun süre çalışan işlerin iş tamamlanmadan önce kaydedilmemiş dosyaları silinmiş olabilir.
Bkz Zaman yolculuğu sorguları için veri saklamayı yapılandırma.
Veri tipi: CalendarInterval
Varsayılan: interval 1 week
enableDeletionVectors true silme vektörlerini ve güncelleştirmeler için tahmine dayalı Girdi/Çıktı'yı etkinleştirmek için.
Bkz . Databricks'te silme vektörleri ve Silme vektörlerini etkinleştirme.
Veri tipi: Boolean
Varsayılan: Çalışma alanı yönetici ayarlarına ve Databricks Runtime sürümüne bağlıdır. Bkz. Silme vektörlerini otomatik olarak etkinleştirme.
logRetentionDuration Bir tablonun geçmişinin ne kadar süreyle tutulacağı. VACUUM işlemler bu bekletme eşiğini geçersiz kılar.
Her denetim noktası yazıldığında, Databricks saklama aralığından daha eski günlük girdilerini otomatik olarak temizler. Bu özelliği büyük bir değere ayarlamak, birçok günlük girdisinin tutulmasını sağlar. Günlük üzerindeki işlemler sabit zaman olduğundan bu durum performansı etkilemez. Geçmiş kaydı üzerindeki işlemler paraleldir, ancak günlük boyutunun artmasıyla beraber daha maliyetli hale gelir.
Bkz Zaman yolculuğu sorguları için veri saklamayı yapılandırma.
Veri tipi: CalendarInterval
Varsayılan: interval 30 days
minReaderVersion (Yalnızca Delta Lake) Bu tablodan okumak için gereken en düşük protokol okuyucu sürümü.
Databricks, bu özelliğin el ile yapılandırılmasına karşıdır.
Bkz . Delta Lake özellik uyumluluğu ve protokolleri.
Veri tipi: Int
Varsayılan: 1
minWriterVersion (Yalnızca Delta Lake) Tabloya yazabilmek için gerekli minimum protokol yazar sürümü.
Databricks, bu özelliğin el ile yapılandırılmasına karşıdır.
Bkz . Delta Lake özellik uyumluluğu ve protokolleri.
Veri tipi: Int
Varsayılan: 2
format-version (Yalnızca Apache Iceberg tarafından yönetilen tablolar) Iceberg tablo biçimi sürümü.
Databricks, bu özelliğin el ile yapılandırılmasına karşıdır.
Bkz. Apache Iceberg v3 özelliklerini kullanma.
Veri tipi: Int
Varsayılan: 2
randomizeFilePrefixes true bölüm bilgileri yerine bir dosya yolu için rastgele ön ek oluşturmak için.
Veri tipi: Boolean
Varsayılan: false
targetFileSize Dosya ayarlama için bayt veya daha yüksek birim cinsinden hedef dosya boyutu. Örneğin, 104857600 (bayt) veya 100mb.
Bkz. Veri dosyası boyutunu denetleme.
Veri tipi: String
Varsayılan: (yok)
parquet.compression.codec Bir tablonun sıkıştırma codec'i.
Geçerli değerler: ZSTD, SNAPPY, GZIP, LZ4, BROTLI (destek biçime göre değişir)
Bu özellik, tabloya gelecek tüm yazma işlemlerinde kümeyi veya oturum varsayılanını (spark.sql.parquet.compression.codec ) geçersiz kılarak seçilen codec bileşenini kullanmasını sağlar. Ancak, tek seferlik DataFrame .write.option("compression", "...") ayarları yine de önceliklidir. Databricks Runtime 16.0 ve sonraki sürümlerde kullanılabilir. Mevcut dosyaların otomatik olarak yeniden yazılmadığını unutmayın. Var olan verileri seçtiğiniz biçimle yeniden sıkıştırmak için kullanın OPTIMIZE table_name FULL.
Veri tipi: String
Varsayılan: ZSTD
parquet.format.version (Yalnızca Delta Lake) Veri dosyaları yazılırken kullanılan Parquet biçimi sürümü. Bunu 2.12.0 gelişmiş kodlamalar, v2 veri sayfası üst bilgileri ve INT64 zaman damgalarını etkinleştirecek şekilde ayarlamak sorgu performansını geliştirebilir ve depolama alanı ayak izini azaltabilir.
Geçerli değerler1.0.0 sürümlere karşılık gelen ve 2.12.0değerleridir.
Bu özellik Delta Lake ve Apache Iceberg tablolarında ayarlanabilir. Bazı OSS Iceberg okuyucuları Parquet v2 kodlamalarını desteklemeyebilir. Bkz. Sınırlamalar.
Bkz. Parquet v2.
Veri tipi: String
Varsayılan: 1.0.0
appendOnly true tablonun sadece eklenebilir olmasını sağlamak. Yalnızca ekleme tabloları, var olan kayıtları silmeye veya mevcut değerleri güncelleştirmeye izin vermez.
Veri tipi: Boolean
Varsayılan: false
autoOptimize.autoCompact Küçük dosya sorunlarını azaltmak için tablo bölümleri içindeki küçük dosyaları otomatik olarak birleştirir. Kabul eder auto (önerilen), true, legacyveya false.
Bkz. Otomatik sıkıştırma.
Veri tipi: String
Varsayılan: (yok)
checkpoint.writeStatsAsJson true sütununun denetim noktalarına JSON biçiminde dosya istatistikleri yazmak için stats .
Veri tipi: Boolean
Varsayılan: false
checkpoint.writeStatsAsStruct true sütununun kontrol noktalarına dosya istatistiklerini yapı formatında yazmak ve stats_parsed, partitionValues_parsed için bölüm değerlerini yapı olarak yazmak.
Veri tipi: Boolean
Varsayılan: true
checkpointPolicy classic klasik denetim noktaları için. v2 v2 denetim noktaları için.
Bkz. Sıvı kümeleme ile tablolar içinCheckpoint V2 ve Uyumluluk.
Veri tipi: String
Varsayılan: classic
columnMapping.mode Farklı adlar kullanan tablo sütunları ve ilgili Parquet sütunları arasında sütun eşlemesini etkinleştirir. Geçerli değerler: none, name ve id.
Delta Lake sütun eşlemesi ile sütunları yeniden adlandırma ve bırakma konusuna bakın.
Not: Etkinleştirildiğinde columnMapping.mode otomatik olarak etkinleştirilir randomizeFilePrefixes.
Veri tipi: DeltaColumnMappingMode
Varsayılan: none
compatibility.symlinkFormatManifest.enabled (Yalnızca Delta Lake) true delta Lake tablosunu tablodaki tüm yazma işlemlerinin bildirimleri otomatik olarak güncelleştirecek şekilde yapılandırma.
Veri tipi: Boolean
Varsayılan: false
enableChangeDataFeed true öğesini değişim veri beslemesini etkinleştirmek için kullanın.
Bkz. Değişiklik veri akışını kullanma.
Veri tipi: Boolean
Varsayılan: false
enableTypeWidening true tür genişletmeyi etkinleştirmek için.
Bkz. Tür genişletme.
Veri tipi: Boolean
Varsayılan: false
isolationLevel Bir işlemin eşzamanlı işlemler tarafından yapılan değişikliklerden yalıtılması gereken derece.
Geçerli değerler: Serializable ve WriteSerializable.
Bkz Yalıtım düzeyleri (WriteSerializable ve Serializable).
Veri tipi: String
Varsayılan: WriteSerializable
randomPrefixLength randomizeFilePrefixes true olduğunda rastgele önekler için oluşturulacak karakter sayısı.
Veri tipi: Int
Varsayılan: 2
setTransactionRetentionDuration Yeni anlık görüntülerin işlem tanımlayıcılarını (örneğin, SetTransactions) koruduğu en kısa süre. Yeni anlık görüntüler, bu özellik tarafından belirtilen süreye eşit veya ondan eski olan işlem kimliklerinin süresinin dolmasını ve dikkate alınmamasını sağlar. Yazmaların tek seferde etkili olmasını sağlamak için SetTransaction tanımlayıcı kullanılır. Ayrıntılar için bkz. Bir kez etkili tablo yazma işlemleri için kullanmaforeachBatch.
Veri tipi: CalendarInterval
Varsayılan: (yok)