Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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:
- Delta protokolleri: okuyucu sürüm 2 veya üzeri ve yazıcı sürüm 5 veya üzeri. Bkz . Delta Lake özellik uyumluluğu ve protokolleri.
- Sütun eşlemesi etkin olan tabloları okumak için Databricks Runtime 10.4 LTS ve üzeri gerekir
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.namemodu 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.idmodu 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:
- Tüm eşzamanlı yazma işlemlerini, akış işleri ve ETL işlem hatları da dahil olmak üzere, duraklatın.
- Tabloda tahmine dayalı iyileştirmeyi kapatın.
- 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
schemaTrackingLocationolmalıdır. -
schemaTrackingLocation, akış yazma hedefinincheckpointLocationdizini içinde olmalıdır. - Birden çok kaynak tablodan okunan iş yükleri için, her kaynak için içinde
checkpointLocationbenzersiz 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:
- Akışı durdurma
- Tabloda sütun eşlemeyi etkinleştirme
- Akışı yeniden başlatın (ilk yeniden başlatma - sütun eşlemesini başlatır)
- 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:
- Delta Lake tablolarını okumak için dizin adlarını kullanan eski iş yükleri. Sütun eşlemeli bölümlenmiş tablolar, bölüm dizinleri için sütun adları yerine rastgele önekler kullanır. Bkz. Delta Lake ve Parquet bölümleme uyumluluğu.
- Değişiklik veri beslemesini kullanan alt akış işlemleri. Bkz . Sütun eşlemeli tablolar.
- Delta Lake tablosundan akışlı okuma, Lakeflow ardışık düzenlerinde de desteklenir. Bkz. Sütun eşleme ve akış.