Tablo özellikleri kaynağı

Delta Lake ve Apache Iceberg, tablo davranışını ve özelliklerini denetlemek için tablo özelliklerini kullanır. Bu özelliklerin belirli anlamları olabilir ve ayarlandığında davranışları etkileyebilir.

Dikkat

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 biçimleri

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

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

Örneğin:

  • Delta tablosunda silme vektörlerini etkinleştirmek için: delta.enableDeletionVectors
  • Iceberg tablosunda silme vektörlerini etkinleştirmek için: iceberg.enableDeletionVectors

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.enabled ve optimizeWrite.enabled SparkSession düzeyinde otomatik sıkıştırmayı ve iyileştirilmiş yazma işlemlerini etkinleştirir. Databricks, çoğu iş yükü için tablo kapsamlı yapılandırmaların kullanılmasını önerir.

SparkSession yapılandırmalarını kullanarak 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 yapılandırması
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:

-- For Delta tables
SET spark.databricks.delta.properties.defaults.appendOnly = true

-- For Iceberg tables
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 tabloları için delta. önekini ve Iceberg tabloları için iceberg. önekini kullanın.

Mülk 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ü. 2.12.0 Daha gelişmiş Parquet kodlamaları ve veri sayfası üst bilgileri kullanarak Databricks Runtime'da sonuçları belirtme.
Geçerli değerler1.0.0 sürümlere karşılık gelen ve 2.12.0değerleridir.
Bu özellik yalnızca Delta tabloları içindir. Iceberg, UniForm tabloları veya Databricks Runtime dışı altyapılar tarafından erişilen tablolar için bu özelliği ayarlamayın.
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 tablosunu, tablodaki tüm yazma işlemlerinin manifest dosyalarını otomatik olarak güncelleyecek ş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ı etkinleştirme.
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)