Azure Databricks'te arşiv desteği
Önemli
Bu özellik Databricks Runtime 13.3 LTS ve üzeri için Genel Önizleme sürümündedir.
Azure Databricks'teki arşiv desteği, Delta tabloları içeren bulut nesne depolamasında bulut tabanlı yaşam döngüsü ilkelerini kullanmanızı sağlayan bir özellik koleksiyonu sunar.
Önemli
Azure Databricks yalnızca Azure Arşivi için arşiv desteğine sahiptir. Yaşam döngüsü yönetimiyle maliyetleri iyileştirme hakkında Azure belgelerine bakın.
Arşiv desteğini neden etkinleştirmelisiniz?
Arşivleme desteği yalnızca arşivlenmiş dosyalara dokunmadan doğru yanıt verilebilen sorgulara izin verir. Bu sorgular şunlardan birini içerir:
- Yalnızca sorgu meta verileri.
- Arşivlenmiş dosyaların taranması gerektirmeyen filtrelere sahip olun.
Arşivlenmiş dosyalarda veri gerektiren tüm sorgular başarısız olur.
Önemli
Azure Databricks, arşivlenmiş dosyaların doğru sonucu döndürmesini gerektiren sorgular için hiçbir zaman sonuç döndürmez.
Arşiv desteği olmadan, veri dosyaları veya işlem günlüğü dosyaları arşivlenmiş konumlara taşındığında ve sorgulandığında kullanılamadığında, Delta tablolarına yönelik işlemler kesintiye uğrayabilir. Arşivleme desteği, mümkün olduğunda arşivlenmiş verilerin sorgulanmaması için iyileştirmeler sağlar. Ayrıca sorguları tamamlamak için arşiv depolama alanından geri yüklenmesi gereken dosyaları tanımlamak için yeni söz dizimi ekler.
Azure Databricks'te bir tablo için arşiv desteğini etkinleştirmek, bulut nesne depolamanız için tanımlanan yaşam döngüsü ilkelerini oluşturmaz veya değiştirmez. İstenen sonuçlar için bulut yaşam döngüsü ilkeniz ve delta.timeUntilArchived
ayar eşit olmalıdır.
Arşivlenmiş veriler için en iyi duruma getirilmiş sorgular
Azure Databricks'teki arşiv desteği Delta tablolarında aşağıdaki sorguları iyileştirir:
Sorgu | Yeni davranış |
---|---|
SELECT * FROM <table_name> LIMIT <limit> [WHERE <partition_predicate>] |
Arşivlenen dosyaları otomatik olarak yoksayın ve arşivlenmemiş bir depolama katmanındaki verilerden sonuç döndür. |
Delta Lake bakım komutları: OPTIMIZE , ZORDER , ANALYZE , PURGE |
Arşivlenmiş dosyaları otomatik olarak göz ardı edin ve tablonun geri kalanında bakım yapın. |
Aşağıdakiler dahil olmak üzere verilerin üzerine yazan veya verileri silen DDL ve DML deyimleri: REPLACE TABLE , INSERT OVERWRITE , TRUNCATE TABLE , DROP TABLE |
Hedef arşivlenmiş veri dosyaları için işlem günlüğü girdilerini silindi olarak işaretleyin. |
FSCK REPAIR TABLE |
Arşivlenmiş dosyaları yoksayın ve yalnızca yaşam döngüsü ilkesine ulaşmamış dosyaları denetleyin. |
Bkz. Sınırlamalar.
Erken hata ve hata iletileri
Arşivlenmiş dosyaları doğru sonuçlar oluşturmak üzere taraması gereken sorgular için Delta Lake için arşiv desteğinin yapılandırılması aşağıdakileri sağlar:
- Sorgular arşivlenmiş dosyalara erişmeye çalıştığında erken başarısız olur ve boşa harcanan işlem azaltılır ve kullanıcıların sorguları hızla uyarlayıp yeniden çalıştırmasına olanak sağlar.
- Hata iletileri, sorgu arşivlenmiş dosyalara erişmeye çalıştığından kullanıcılara bir sorgunun başarısız olduğunu bildirir.
Kullanıcılar, SHOW ARCHIVED FILES
söz dizimini kullanarak geri yüklenmesi gereken dosyaların raporunu oluşturabilir. Bkz. Arşivlenmiş dosyaları gösterme.
Önemli
hatasını Not enough files to satisfy LIMIT
alırsanız, tablonuzda LIMIT
tarafından belirtilen kayıt sayısını karşılamak için arşivlenmemiş dosyalarda yeterli veri satırı yoktur. Belirtilen LIMIT
öğesini LIMIT
karşılamak için yeterli arşivlenmemiş satır bulmak için yan tümcesini düşürin.
Arşiv desteğini etkinleştirme
Aşağıdaki örnek söz diziminde olduğu gibi temel alınan bulut yaşam döngüsü yönetim ilkesinde yapılandırılan arşiv aralığını el ile belirterek Delta tabloları için Azure Databricks'te arşiv desteğini etkinleştirirsiniz:
ALTER TABLE <table_name> SET TBLPROPERTIES(delta.timeUntilArchived = 'X days');
Arşiv desteğini etkinleştirme, Azure Databricks'e belirtilen süreden daha eski dosyaları yoksaymasını bildirir. Bulut nesne depolamanız için yaşam döngüsü ilkeleri ayarlamadan bu ayarı etkinleştirirseniz, Azure Databricks bu belirtilen eşiğe göre dosyaları yine de yoksayar, ancak hiçbir veri arşivlenmezse.
Delta Lake, bulut hesabınızda yapılandırılan yaşam döngüsü yönetimi ilkeleriyle doğrudan etkileşim kurmaz. Bulut hesabınızda ilkeyi güncelleştirirseniz, Delta tablonuzda ilkeyi güncelleştirmeniz gerekir. Bkz . Yaşam döngüsü yönetimi geçiş kuralını değiştirme.
Önemli
Arşiv desteği tamamen uyumlu Azure Databricks işlem ortamlarına dayanır ve yalnızca Delta tablolarında çalışır. Arşiv desteğini yapılandırmak, OSS Delta Lake istemcilerinde veya Databricks Runtime 12.2 LTS ve altında davranışı, uyumluluğu veya desteği değiştirmez.
Arşivlenmiş dosyaları göster
Belirli bir sorguyu tamamlamak için geri yüklenmesi gereken dosyaları tanımlamak için aşağıdaki örnekte olduğu gibi kullanın SHOW ARCHIVED FILES
:
SHOW ARCHIVED FILES FOR table_name [ WHERE predicate ];
Bu işlem, arşivlenen dosyalar için URI'leri Spark DataFrame olarak döndürür. Nesne depolama sağlayıcınızdan belgelenen yönergeleri izleyerek gerekli arşivlenmiş dosyaları geri yükleyin. Azure Databricks'in geri yüklenen verileri nasıl denetlediği hakkında bilgi için bkz . Geri yüklenen veriler için Azure Databricks örneği nasıl yapılır?.
Not
Bu işlem sırasında Delta Lake yalnızca işlem günlüğünde yer alan veri istatistiklerine erişebilir. Varsayılan olarak, tablodaki ilk 32 sütunda toplanan aşağıdaki istatistikler şunlardır:
- En düşük değerler
- En yüksek değerler
- Null sayılar
- Toplam kayıt sayısı
Döndürülen dosyalar, bir koşulu yerine getiren kayıtların dosyada mevcut olup olmadığını belirlemek için okunması gereken tüm arşivlenmiş dosyaları içerir. Databricks, geri yüklenmesi gereken dosya sayısını azaltmak için verilerin bölümlendiği, z sıralı veya kümelendiği alanları içeren koşul sağlamayı önerir.
Arşivlenmiş verileri güncelleştirme veya silme
Arşivlenmiş dosyalardaki verileri etkileyen bir MERGE
, UPDATE
veya DELETE
işlemi çalıştırdığınızda işlem başarısız olur. Bu işlemleri çalıştırmak için verileri hızlı almayı destekleyen bir depolama katmanına geri yüklemeniz gerekir. Geri yüklemeniz gereken dosyaları belirlemek için SHOW ARCHIVED FILES
kullanın.
Geri yüklenen veriler için Azure Databricks örneği nasıl yapılır?
Azure Databricks arşiv desteği etkinleştirilmiş bir tablo üzerinde tarama hazırladığında, dosyaların geri yüklenip geri yüklenmediğini belirlemek için sorgunun gerektirdiği belirtilen saklama süresinden eski dosyaları örnekler.
Sonuçlar arşivlendiği varsayılan örnek dosyaların geri yüklendiğini gösteriyorsa, Azure Databricks sorgu için tüm dosyaların geri yüklendiğini ve sorgu işlemlerinin gerçekleştirildiğini varsayar.
Sınırlamalar
Şu sınırlamalar geçerlidir:
- Dosya oluşturma zamanına bağlı olmayan yaşam döngüsü yönetimi ilkeleri için destek yoktur. Buna erişim zamanı tabanlı ilkeler ve etiket tabanlı ilkeler dahildir.
- Arşivlenmiş dosyaları olan bir tabloda
DROP COLUMN
kullanamazsınız. -
REORG TABLE APPLY PURGE
en iyi çabayı gösterir, ancak yalnızca silme vektör dosyaları ve arşivlenmemiş başvuruda bulunan veri dosyaları üzerinde çalışır.PURGE
arşivlenmiş silme vektör dosyalarını silemiyor. - Yaşam döngüsü yönetimi geçiş kuralının genişletilmesi beklenmeyen davranışlara neden olur. Bkz . Yaşam döngüsü yönetimi geçiş kuralını genişletme.
Yaşam döngüsü yönetimi geçiş kuralını değiştirme
Bulut yaşam döngüsü yönetimi geçiş kuralınızın zaman aralığını değiştirirseniz delta.timeUntilArchived
özelliğini güncelleştirmeniz gerekir.
Arşivlemeden önceki zaman aralığı kısaltılırsa (dosya oluşturma işleminden bu yana daha az zaman), Tablo özelliği güncelleştirildikten sonra Delta tablosu için arşivleme desteği normal şekilde çalışmaya devam eder.
Yaşam döngüsü yönetimi geçiş kuralını genişletme
Arşivlemeden önceki zaman aralığı uzatılırsa (arşivleme tetiklenmeden önce daha fazla zaman eklemek için), özelliği delta.timeUntilArchived
yeni değere güncelleştirmek hatalara neden olabilir. Bulut sağlayıcıları, veri saklama ilkeleri değiştirildiğinde arşivlenmiş depolamadan dosyaları otomatik olarak geri yüklemez. Bu, daha önce arşivleme için uygun olan ancak şimdi arşivleme için uygun olarak kabul edilmeyen dosyaların hala arşivlenmiş olduğu anlamına gelir.
Önemli
Hataları önlemek için, delta.timeUntilArchived
özelliğini hiçbir zaman en son arşivlenen verilerin gerçek yaşından büyük bir değere ayarlamayın.
Arşivleme zaman aralığının 60 günden 90 güne değiştirildiği bir senaryo düşünün:
- İlke değiştiğinde 60 ile 90 günlük arasındaki tüm kayıtlar arşivlenir.
- 30 gün boyunca hiçbir yeni dosya arşivlenmemiştir (ilke genişletildiğinde arşivlenmeyen en eski dosyalar 60 gündür).
- 30 gün sonra yaşam döngüsü ilkesi arşivlenen tüm verileri doğru şekilde açıklar.
delta.timeUntilArchived
ayarı, Delta işlem günlüğü tarafından kaydedilen dosya oluşturma süresine göre ayarlanan zaman aralığını izler. Temel alınan ilke hakkında açık bilgisine sahip değildir. Eski arşiv eşiği ile yeni arşiv eşiği arasındaki gecikme süresi boyunca, arşivlenmiş dosyaların sorgulanmaması için aşağıdaki yaklaşımlardan birini kullanabilirsiniz:
- Tüm dosyaların arşivlenebileceği süre geçene kadar ayarı
delta.timeUntilArchived
eski eşikle bırakabilirsiniz.- Yukarıdaki örnekten sonra, ilk 30 gün boyunca her gün başka bir günün değeri Azure Databricks tarafından arşivlenmiş olarak kabul edilir ancak yine de bulut sağlayıcısı tarafından arşivlenmesi gerekir. Bu hataya neden olmaz, ancak sorgulanabilecek bazı veri dosyalarını yoksayar.
- 30 gün sonra
delta.timeUntilArchived
90 days
olarak güncelleştirin.
- Gecikme süresi boyunca geçerli aralığı yansıtacak şekilde her gün
delta.timeUntilArchived
ayarı güncelleştirebilirsiniz.- Bulut ilkesi 90 gün olarak ayarlanmış olsa da arşivlenen verilerin gerçek yaşı gerçek zamanlı olarak değişir. Örneğin, 7 gün sonra ayarı,
delta.timeUntilArchived
67 days
arşivlenen tüm veri dosyalarının yaşını doğru şekilde yansıtır. - Bu yaklaşım yalnızca sık erişimli katmanlardaki tüm verilere erişmeniz gerekiyorsa gereklidir.
- Bulut ilkesi 90 gün olarak ayarlanmış olsa da arşivlenen verilerin gerçek yaşı gerçek zamanlı olarak değişir. Örneğin, 7 gün sonra ayarı,
Not
değerinin delta.timeUntilArchived
güncelleştirilmesi hangi verilerin arşivlenmesini değiştirmez. Yalnızca Azure Databricks'in arşivlenmiş gibi davrandığı verileri değiştirir.