Aracılığıyla paylaş


Dış tabloyu yönetilen Unity Kataloğu tablosuna dönüştürme

Bu sayfada, Azure Databricks'te bir dış tabloyu Unity Catalog yönetilen bir tabloya dönüştürmek için ALTER TABLE ... SET MANAGED komutunun nasıl kullanıldığı açıklanmaktadır.

SET MANAGED genel bakış

Azure Databricks'te SET MANAGED dış tabloyu Unity Kataloğu yönetilen tablosuna dönüştürmek için özelliğini kullanın. Dönüştürme için (CTAS) de kullanabilirsiniz CREATE TABLE AS SELECT ancak Databricks aşağıdaki avantajlar için kullanılmasını SET MANAGED önerir:

  • Okuyucu ve yazıcı kapalı kalma süresini en aza indirme.
  • Dönüştürme sırasında eşzamanlı yazma işlemlerini işleme.
  • Tablo geçmişinin korunması.
  • Aynı ad, ayarlar, izinler ve görünümler de dahil olmak üzere aynı tablo yapılandırmalarını koruma.
  • Dönüştürülen yönetilen tabloyu dış tabloya geriye döndürme olanağı.

Prerequisites

Tablo dönüştürme özelliğini kullanmak için aşağıdaki önkoşulları karşılamanız gerekir:

  • Dış tablolardaki tüm okuyucular ve yazıcılar ad tabanlı erişim kullanmalıdır. Örneğin:

    SELECT * FROM catalog_name.schema_name.table_name;
    

    Yol tabanlı erişim desteklenmez ve tablo dönüştürüldükten sonra başarısız olabilir.

  • veya SET MANAGEDkullanmak için Databricks Runtime 17.0 veya üzeri ya da sunucusuz işlem kullanmanız UNSET MANAGED gerekir.

  • Iceberg okumaları (UniForm) etkinleştirilmiş Unity Kataloğu tablolarını dönüştürmek için kullanmak için Databricks Runtime 17.2 veya üzeri veya sunucusuz işlem kullanmanız TRUNCATE UNIFORM HISTORYgerekir.

  • Azure Databricks okuyucuları ve yazarları Databricks Runtime 15.4 LTS veya üzerini kullanmalıdır. Okuyucularınız veya yazarlarınız 14.3 LTS veya üzerini kullanıyorsa bkz. Databricks Runtime 14.3 LTS veya altındaki okuyucular ve yazarlar için alternatif seçenek.

  • SET MANAGED Tablonuzda DELTA_TRUNCATED_TRANSACTION_LOG, minReaderVersion=2ve minWriterVersion=7varsa komut bir tableFeatures={..., columnMapping} hatayla başarısız olur. kullanarak tablonuzun bu özelliklere DESCRIBE DETAILsahip olup olmadığını de kontrol edebilirsiniz.

  • Databricks dışındaki istemciler, Unity Kataloğu tarafından yönetilen tablo okuma işlemlerini desteklemelidir. Bkz Delta istemcileri ile tabloları okuma.

    • Tablolarınıza erişen okuyucuların ve yazarların Databricks Runtime mı yoksa Databricks dışı dış mı olduğunu görmek için Access Insights panosunu kullanın.

Important

Çakışmaları önlemek için, tablonuzda çalışan mevcut OPTIMIZE komut işlerini (sıvı kümeleme, sıkıştırma, ZORDER) iptal edin ve dış tablolarınızı yönetilen tablolara dönüştürürken hiçbir iş zamanlamayın.

Dış tablodan yönetilen tabloya dönüştürme

Important

SET MANAGED komutu Databricks Runtime 17.0 veya üzeri ve sunucusuz işlemde kullanılabilir.

TRUNCATE UNIFORM HISTORY Bu komut Databricks Runtime 17.2 veya üzeri ve sunucusuz işlemde kullanılabilir.

Unity Kataloğu dış tablonuzu Unity Kataloğu yönetilen tablosuna dönüştürmek için aşağıdaki komutlardan birini çalıştırın.

  • Apache Iceberg okumaları (UniForm) etkin olmayan Unity Kataloğu dış tabloları için:

    ALTER TABLE catalog.schema.my_external_table SET MANAGED;
    

    Dönüştürme işleminden sonra, uyumluluk kaygıları olmadan yönetilen tablonuzda Iceberg okumalarını etkinleştirebilirsiniz.

  • Iceberg okumalarının (UniForm) zaten etkin olduğu Unity Kataloğu dış tabloları için:

    ALTER TABLE catalog.schema.my_external_table SET MANAGED TRUNCATE UNIFORM HISTORY;
    

    Bu durumda, en iyi tablo performansını ve uyumluluğunu korumak için ekleyin TRUNCATE UNIFORM HISTORY . TRUNCATE UNIFORM HISTORY yalnızca UniForm Iceberg geçmişini keserek Delta geçmişini kaldırmaz. Bu komut, kesme sonrasında Iceberg için kısa bir okuma ve yazma kesintisine neden olur.

Veri kopyalama sırasında komutunuz kesintiye uğrarsa, komutu yeniden başlatabilirsiniz ve kaldığınız yerden devam eder.

Warning

Databricks, aynı tabloda birden çok SET MANAGED komutun eşzamanlı olarak çalıştırılmaması önerilir ve bu da tutarsız bir tablo durumuna yol açabilir.

Tablo dönüştürme işleminden sonra şunları yapmalısınız:

  • Dış tabloyu kullanarak herhangi bir akış işini (okuma veya yazma) yeniden başlatın.
  • Okuyucularınızın ve yazarlarınızın yönetilen tabloyla çalıştığından emin olun.

Tahmine dayalı iyileştirme, el ile devre dışı bırakılmış olması dışında otomatik olarak etkinleştirilir. Bkz. Tahmine dayalı iyileştirmenin etkinleştirilip etkinleştirilmediğini denetleme.

Tahmine dayalı iyileştirme etkinleştirildiğinde Azure Databricks, Unity Kataloğu dış konumunuzdaki verileri 14 gün sonra otomatik olarak siler. Tahmine dayalı iyileştirme devre dışı bırakılırsa, 14 gün geçtikten sonra yeni dönüştürülen yönetilen tabloda çalıştırabilirsiniz VACUUM (Databricks Runtime 17.0 veya üzeri veya sunucusuz işlem gerektirir).

VACUUM my_converted_table

Note

Bazı durumlarda Unity Kataloğu dış konumunuzdaki veriler, tahmine dayalı iyileştirme etkinleştirildiğinde bile 14 gün sonra silinemeyebilir. Örneğin, Unity Kataloğu yönetilen tablonuz sık kullanılmıyorsa veya çok küçükse, otomatik silme gerçekleşmeyebilir. Bu gibi durumlarda, 14 gün sonra eski verileri kaldırmak için yeni dönüştürülen yönetilen tabloda el ile çalıştırın VACUUM (Databricks Runtime 17.0 veya üzeri veya sunucusuz işlem gerektirir).

Azure Databricks yalnızca dış konumdaki verileri siler. Unity Catalog'da Delta işlem günlüğü ve tablo referansı ayrı ayrı tutulur.

Dönüştürmeyi denetleme

Dış tablonuzun yönetilen tabloya dönüştürüldüğünü onaylayabilirsiniz:

DESCRIBE EXTENDED catalog_name.schema_name.table_name

Tablonun dönüştürüldüğünü onaylamak için bu komutun çıktısını denetleyin. Tablo Type olarak MANAGEDgösterilmelidir.

Tablo bilgilerini Catalog Explorer'da görüntülüyorsanız sayfayı yenileyin. Ayrıntılar sekmesinde, Bu tablo hakkında altında, tablonun Türü olarak MANAGEDgösterilmelidir.

Databricks Runtime 14.3 LTS veya altındaki okuyucular ve yazarlar için alternatif seçenek

Databricks, SET MANAGED komutundan yararlanabilmek, tablo geçmişini koruma becerisi dahil, için tüm okuyucuları ve yazarları Databricks Runtime 15.4 LTS veya daha yüksek bir sürüme yükseltmenizi önerir.

Databricks Runtime 14.3 veya altındaki okuyucularınız veya yazarlarınız varsa komutunu kullanmaya SET MANAGED devam edebilirsiniz. Ancak, yönetilen tabloya dönüştürdükten sonra, zaman damgasına göre geçmiş commit'lere zaman yolculuğu yapamazsınız. Bunu yalnızca sürüme göre yapabilirsiniz. 14 günlük pencerede bir dış tabloya geri dönerseniz, dönüştürmeden önce yapılan geçmiş işlemelere zaman yolculuğu yeniden etkinleştirilir.

Her durumda (Hangi Databricks Runtime sürümü olursa olsun), zaman damgasına göre UC dış sürümüne geri dönmek, dönüştürülen UC yönetilen tablonuzda, dönüştürmeyi bitirdiğiniz zaman ile geri almayı denemeden önce yapılan hiçbir işleme için çalışmaz.

Databricks Runtime 15.4 LTS veya altı ile dönüştürme işleminden sonra bir tabloya yazmak için özelliğin düşürülmesi inCommitTimestamp gerekir:

ALTER TABLE <table_name> DROP FEATURE inCommitTimestamp;

Dönüştürme hatalarını giderme

Bu bölümde, dış tabloları Unity Kataloğu yönetilen tablolarına dönüştürürken karşılaşılan yaygın sorunlar ve bunların nasıl çözüldüğü açıklanmaktadır.

Databricks Runtime sürüm tutarlılığı

Farklı Databricks Runtime sürümleri kullanarak aynı tablonun dönüştürülmesi işlemini çalıştırmaktan veya yeniden denemekten kaçının. Meta veriler sürümler arasında farklı şekilde seri hale getirilebilir ve bu da bir VERSIONED_CLONE_INTERNAL_ERROR.EXISTING_FILE_VALIDATION_FAILED hataya neden olur. Dönüştürme başarısız olursa, her zaman aynı Databricks Runtime sürümünü kullanarak yeniden deneyin.

Dönüştürme sırasında küme kapanışı

Kümeniz dönüştürme sırasında kapanırsa, komut DELTA_ALTER_TABLE_SET_MANAGED_INTERNAL_ERROR ile başarısız olabilir. Dönüştürmeyi sürdürmek için komutunu yeniden deneyin.

Bozuk dış tablo

Dış tablo zaten bozuksa (örneğin, geçersiz tablo durumu), dönüştürme , DELTA_TRUNCATED_TRANSACTION_LOGveya DELTA_TXN_LOG_FAILED_INTEGRITYgibi DELTA_STATE_RECOVER_ERRORShatalarla başarısız olabilir. Dönüştürmeyi denemeden önce, dış tabloda gibi DESCRIBE DETAILtemel işlemleri çalıştırabildiğinize emin olun.

Harici tabloya geri yükle

Important

UNSET MANAGED komutu Databricks Runtime 17.0 veya üzeri ve sunucusuz işlemde kullanılabilir.

Dış tabloyu yönetilen tabloya dönüştürdükten sonra 14 gün içinde geri alabilirsiniz.

Geri alırsanız, dönüştürme ve geri alma arasında dış konuma yapılan işlemeler sürüme göre zaman yolculuğuna uygun olur, ancak zaman damgasına göre değil. Geri alma işleminin ardından yedi gün sonra, yönetilen konumdaki veriler silinir.

Dış tabloya geri dönmek için aşağıdaki komutu çalıştırın:

ALTER TABLE catalog.schema.my_managed_table UNSET MANAGED

Geri alma komutu kesintiye uğrarsa, MANAGED komutuna benzer şekilde yeniden denemek için SET komutu yeniden çalıştırabilirsiniz.

Geri almayı denetleme

Dönüştürmenizin geri getirildiğini onaylayabilirsiniz:

DESCRIBE EXTENDED catalog_name.schema_name.table_name

Tablonun geri getirildiğini onaylamak için bu komutun çıktısını denetleyin. Tablo Type olarak EXTERNALgösterilmelidir.

Tablo bilgilerini Catalog Explorer'da görüntülüyorsanız sayfayı yenileyin. Ayrıntılar sekmesinde, Bu tablo hakkında altında, tablonun Türü olarak EXTERNALgösterilmelidir.

Bir dış tabloya geri döndüğünüzde, dönüştürmede olduğu gibi, akış işlerinizi de yeniden başlatmanız gerekir.

Kapalı kalma süresi ve veri kopyalama süreleri

Okuyucular veya yazarlar dönüştürme sırasında tabloya eriştiğinde kesinti süresi oluşabilir. Ancak, 'DEEP CLONE' komutuyla karşılaştırıldığında, SET MANAGED komut okuyucular ve yazarlar için kapalı kalma süresini en aza indirir veya ortadan kaldırır. Databricks Runtime 16.1 veya üzerindeki sistemler kesinti yaşamaz. İlk adımda, tablo verileri ve delta günlüğü kopyalandığında okuyucular ve yazıcılar etkilenmez.

İkinci adım sırasında Unity Kataloğu dış konumuna yazma işlemleri engellenir ve ilk veri kopyalama sırasında dış konuma yapılan işlemeler taşınır. Bu ikinci veri kopyalama adımı, Databricks Runtime 15.4 LTS veya altındaki yazıcılar ve okuyucular için kesintiye neden olacaktır.

Bundan sonra okuyucular ve yazarlar Unity Kataloğu yönetilen konumuna kaydırılır ve yeni yönetilen tablo konumu Unity Kataloğu'na kaydedilir. Databricks Runtime 16.1 veya üzeri bir sürüme sahip okuyucular, neredeyse hiç kesinti yaşamayacakları bir deneyim yaşayacaklar.

Tahmini kapalı kalma süresi:

Tablo boyutu Önerilen küme boyutu Veri kopyalama zamanı Okuyucu ve yazıcı çalışmama süresi
100 GB veya daha az 32 çekirdekli / DBSQL küçük ~6 dakika veya daha az ~1-2 dakika veya daha az
1 Terabayt (TB) 64 çekirdekli / DBSQL orta Yaklaşık 30 dk ~1-2min
10 TB (terabayt) 256 çekirdekli / DBSQL x-large Yaklaşık 1,5 saat ~1-5min

Tahminlerde 0,5-2 GB/CPU çekirdeği/dakika aktarım hızı varsayılır.

Note

Kapalı kalma süresi farklılık gösterebilir. Dönüştürmenin performansı, dosya boyutu, dosya sayısı ve işleme sayısı gibi faktörlere bağlıdır.

Bilinen sınırlamalar

Dış tabloları yönetilen tablolara dönüştürmenin sınırlamaları şunlardır:

  • Akış istemcileri: Dönüştürmeden sonra akış işlerini yeniden başlatmanız gerekir.

  • Geri alma işleminden sonra tablo geçmişi kısıtlamaları: Databricks Runtime 15.4 LTS veya üzeri sürümlerdeki okuyucular/yazarlar için dönüştürme sonrası yapılan işlemelerin tablo geçmişi ancak geri alma işleminden önce sürüme göre zaman yolculuğu yapılabilir ancak zaman damgasına göre değil.

  • Delta Paylaşımı sınırlamaları: SET MANAGED Komut Delta Paylaşımı ile tam olarak uyumlu değil. Açık Delta Paylaşımı beklendiği gibi çalışsa da, Databricks-Databricks paylaşımı alıcı tablosunun yönetilen konumunu otomatik olarak güncelleştirmez. Alıcı, tablo yeniden paylaşılana kadar eski konumdan okumaya devam eder. Tabloyu yeniden paylaşabilmek için:

    ALTER SHARE <share_name> REMOVE TABLE <table_name>;
    ALTER SHARE <share_name> ADD TABLE <table_name> AS <table_share_name> WITH HISTORY;
    
  • Birden çok bulut bölgesi: Unity Kataloğu meta veri deponuzun, kataloğunuzun veya şemanızın varsayılan yönetilen konumu dönüştürülmekte olan dış tablonun depolama konumundan farklı bir bulut bölgesindeyse, bölgeler arası ek veri aktarımı maliyetlerine neden olabilirsiniz. Bulut sağlayıcısı bu ücretleri Databricks denetimi dışında uygular.

    Şemanızın, kataloğunuzun ve meta veri deponuzun konumlarını denetlemek için aşağıdaki komutları kullanabilirsiniz:

    DESC SCHEMA EXTENDED <catalog_name>.<schema_name>;
    
    DESC CATALOG EXTENDED <catalog_name>;
    
    SELECT * FROM system.information_schema.metastores;