Aracılığıyla paylaş


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 LIMITalırsanız, tablonuzda LIMITtarafı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, UPDATEveya 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:

  1. İlke değiştiğinde 60 ile 90 günlük arasındaki tüm kayıtlar arşivlenir.
  2. 30 gün boyunca hiçbir yeni dosya arşivlenmemiştir (ilke genişletildiğinde arşivlenmeyen en eski dosyalar 60 gündür).
  3. 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:

  1. 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.timeUntilArchived90 daysolarak güncelleştirin.
  2. 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.timeUntilArchived67 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.

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.