Delta Lake sütun eşlemesi ile sütunları yeniden adlandırma ve silme

Delta Lake sütun eşlemesi, veri dosyalarını yeniden yazmadan, yalnızca meta veri düzeyindeki değişikliklerle sütunların yeniden adlandırılmasını veya silinmesini sağlar. Sütun eşlemesi, boşluklar gibi sütun adlarında Parquet tarafından desteklenmeyen karakterlere de izin verir, böylece sütunları yeniden adlandırmadan CSV veya JSON verilerini Delta Lake'e doğrudan alabilirsiniz.

Önkoşullar

Sütun eşlemeyi etkinleştirmeden önce Sınırlamalar'ı gözden geçirin.

Sütun eşleme için aşağıdakiler gereklidir:

Sütun eşlemesini etkinleştir

Yeni bir tabloda modla id sütun eşlemeyi etkinleştirmek için aşağıdaki komutu kullanın:

CREATE table <table-name> (
  id INT,
  name STRING
)
USING DELTA
TBLPROPERTIES (
  'delta.columnMapping.mode' = 'id'
);

Mevcut bir tabloda modla name sütun eşlemeyi etkinleştirmek için aşağıdaki komutu kullanın:

ALTER TABLE <table-name> SET TBLPROPERTIES (
  'delta.columnMapping.mode' = 'name'
)

Sütun eşleme modları hakkında ayrıntılı bilgi için bkz. Sütun eşleme modları.

Sütunu yeniden adlandırma

Delta Lake tablosu için sütun eşleme etkinleştirildiğinde sütunu yeniden adlandırabilirsiniz:

ALTER TABLE <table-name> RENAME COLUMN old_col_name TO new_col_name

Daha fazla örnek için bkz . Tablo şemalarını şema evrimi ile güncelleştirme.

Sütunları bırak

Delta Lake tablosu için sütun eşleme etkinleştirildiğinde, bir veya daha fazla sütun bırakabilirsiniz:

ALTER TABLE table_name DROP COLUMN col_name
ALTER TABLE table_name DROP COLUMNS (col_name_1, col_name_2, ...)

Daha fazla ayrıntı için bkz. Tablo şemalarını şema evrimiyle güncelleştirme.

Sütun eşleme modları

delta.columnMapping.mode table özelliği, veri dosyalarını yeniden yazmadan sütunları silinmiş veya yeniden adlandırılmış olarak işaretlemek için yalnızca meta veri değişikliklerini etkinleştirir. Aşağıdaki modlar kullanılabilir:

  • none (varsayılan): Sütun eşleme etkin değil. Sütun adları Parquet adlandırma kısıtlamalarına tabidir.
  • name: Bu, yalnızca meta veri sütunlarının yeniden adlandırılmasını ve bırakılmasını sağlar ve sütun adlarında özel karakterlere izin verir. name modu yeni ve mevcut tablolarda ayarlanabilir.
  • id: Bu, yalnızca meta veri sütunlarının yeniden adlandırılmasını ve bırakılmasını sağlar ve sütun adlarında özel karakterlere izin verir. id modu tablo oluşturmada ayarlanmalıdır ve mevcut tablolarda ayarlanamaz.

Note

Databricks, uyumluluk amacıyla çoğu kullanım örneğinde modu önerir id . Ancak, name için bir değer delta.columnMapping.mode sağlamazsanız ve UniForm gibi Iceberg uyumluluk özelliklerini etkinleştirirseniz mod otomatik olarak ayarlanır.

Sütun adlarında desteklenen karakterler

Delta Lake tablosu için sütun eşleme etkinleştirildiğinde, sütun adlarında boşluklar ve şu karakterlerden herhangi birini ekleyebilirsiniz: ,;{}()\n\t=.

Sütun eşlemesini kaldırma

Warning

Sütun eşlemesini kaldırmak, fiziksel sütun adlarını mantıksal adlarla değiştirmek için tüm veri dosyalarını yeniden yazar. Bu işlem satır düzeyi veya fiziksel çakışma çözümünü desteklemez.

Eşzamanlı yazma işlemleri bir ConcurrentModificationException neden olur.

Kolon eşlemesini kaldırmadan önce:

  1. Tüm eşzamanlı yazma işlemlerini, akış işleri ve ETL işlem hatları da dahil olmak üzere, duraklatın.
  2. Tabloda tahmine dayalı iyileştirmeyi kapatın.
  3. Büyük tablolar için bu işlemi düşük etkinlik dönemlerinde zamanlayın.

Aşağıdaki komutu kullanarak tablodan sütun eşlemesini kaldırabilirsiniz:

ALTER TABLE <table-name> SET TBLPROPERTIES ('delta.columnMapping.mode' = 'none')

Sütun eşlemesini kaldırmak ve tablo protokollerini düşürmek için bkz. Uyumluluğu koruma.

Uyumluluğu koruma

Databricks Runtime 15.4 LTS ve üzeri sürümlerde, sütun eşlemesini kaldırmak ve tablo protokolünü düşürmek için DROP FEATURE komutunu kullanabilir, Databricks Runtime 10.3 ve altını kullanan okuyucularla uyumluluğu koruyabilirsiniz.

Important

Tablodaki sütun eşlemesi bırakıldığında bölümlenmiş tablolar için dizin adlarında kullanılan rastgele ön ekler kaldırılamaz.

Bkz . Delta Lake tablosu özelliğini bırakma ve tablo protokolünü düşürme.

Sütun eşleme ve akış

Sütun yeniden adlandırmaları veya silmeleri gibi eklemeli olmayan şema değişiklikleri, akış okuma işlemlerini bozabilir. Delta Lake'in şema değişikliklerini izlemesine ve akış hatalarını önlemesine izin vermek için bir schemaTrackingLocation kullanın.

Configuration

schemaTrackingLocation yapılandırılırken:

  • Kaynak tablosundan yapılan her akış okuma işleminin kendi schemaTrackingLocation olmalıdır.
  • schemaTrackingLocation, akış yazma hedefinin checkpointLocation dizini içinde olmalıdır.
  • Birden çok kaynak tablodan okunan iş yükleri için, her kaynak için içinde checkpointLocation benzersiz alt dizinler belirtin.

Delta Lake akış seçeneklerinin tam listesi için bkz. Delta Lake.

Etkin bir akışta sütun eşlemesini etkinleştirme

Etkin bir akış işinde sütun eşlemesini etkinleştirmek için:

  1. Akışı durdurma
  2. Tabloda sütun eşlemeyi etkinleştirme
  3. Akışı yeniden başlatın (ilk yeniden başlatma - sütun eşlemesini başlatır)
  4. Akışı yeniden başlatın (ikinci yeniden başlatma - şema değişikliklerini etkinleştirir)

Diğer tüm şema değişiklikleri (sütun ekleme veya bırakma veya sütun türlerini değiştirme) akışı yeniden başlatmanızı gerektirir.

Örneği

Sütun eşlemesi olan bir Delta Lake tablosundan yapılan akış okuması için bir schemaTrackingLocation belirtmek üzere aşağıdaki örneği kullanın:

checkpoint_path = "/path/to/checkpointLocation"

(spark.readStream
  .option("schemaTrackingLocation", checkpoint_path)
  .table("delta_source_table")
  .writeStream
  .option("checkpointLocation", checkpoint_path)
  .toTable("output_table")
)

Sınırlama

Sütun eşlemesini etkinleştirmek aşağıdakileri bozabilir:

Ek kaynaklar