Dış veya yabancı Delta Lake tablolarını Unity Kataloğu yönetilen tablolarına dönüştürme

Important

Dış tabloyu yönetilen tabloya dönüştürme genel olarak kullanılabilir.

Yabancı bir tabloyu yönetilen tabloya dönüştürmek Genel Önizleme aşamasındadır. Yalnızca Hive metastore ve Glue Federation kullanılarak federe edilen yabancı tablolar desteklenir.

Dış veya yabancı Delta Lake tablosunu Azure Databricks'da Unity Kataloğu yönetilen tablosuna dönüştürmek için, komutunu veya dış tablolar için Katalog Gezgini'ni ALTER TABLE ... SET MANAGED kullanın. Dönüştürme, ad, ayarlar, izinler ve görünümler dahil olmak üzere tablo yapılandırmalarını korur ve tablo geçmişini korur.

Dış tablo dönüştürmeleri SET MANAGED için de:

  • Okuyucu ve yazıcı kesinti süresini en aza indirir.
  • Dönüştürme sırasında eşzamanlı yazma işlemlerini işler.
  • Dönüştürülmüş yönetilen bir tabloyu harici bir tabloya geri döndürmenizi sağlar.
  • Eski kodun dönüştürmeden sonra çalışmasına izin vermek için yol tabanlı okumaları ve yazmaları yeniden yönlendirir.

Harici bir tabloyu dönüştürmek için CREATE TABLE AS SELECT (CTAS) kullanabilseniz de Databricks, şu avantajlar nedeniyle SET MANAGED yöntemini önerir.

Yabancı tablo dönüştürmeleri için Databricks, dönüştürülen tabloda öngörücü iyileştirmeyi otomatik olarak etkinleştirmek yerine INHERIT olarak ayarlar. Bkz. SQL kullanan yabancı tablolar.

Yabancı tabloları dış tablolara dönüştürmek için bkz . Yabancı tabloyu dış Unity Kataloğu tablosuna dönüştürme.

Prerequisites

Önkoşullar, dış tabloyu mu yoksa yabancı tabloyu mu dönüştürdüğünüze bağlı olarak farklılık gösterir.

Dış tablolar

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

  • Biçim: Tablo Delta Lake biçimini kullanmalıdır.
  • Çalışma zamanı: , SET MANAGEDveya UNSET MANAGEDkullanmak için Databricks Runtime 17.3 LTS veya üzeri ya da Sunucusuz işlem kullanmanız TRUNCATE UNIFORM HISTORYgerekir.
  • Okuyucular ve yazarlar: Kaynak tablolarınızın Azure Databricks okuyucular ve yazıcılar Databricks Runtime 15.4 LTS veya üzerini kullanmalıdır. Okuyucularınız veya yazarlarınız 14.3 LTS ya da daha düşük bir sürüm kullanıyorsa, Eski okuyucular ve yazarlar bölümüne bakın.
  • Dış istemciler: Dış (Databricks olmayan) istemcilerin Unity Kataloğu yönetilen tablolarında okumaları desteklemesi gerekir. Bkz. Delta istemcileri ile tablolara erişme.
    • 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.
  • Özellik uyumluluğu: Tablonuzda minReaderVersion=2, minWriterVersion=7ve tableFeatures={..., columnMapping}SET MANAGED varsa komut bir DELTA_TRUNCATED_TRANSACTION_LOG hatayla başarısız olur. tablonuzun kullanarak DESCRIBE DETAILbu özelliklere sahip olup olmadığını doğrulayın. Bkz . Delta Lake özellik uyumluluğu ve protokolleri.

Dönüştürme işleminden sonra, yol tabanlı okuma ve yazma işlemleri otomatik olarak yeni yönetilen konuma küçük bir performans yüküyle yönlendirilir. Databricks, performans ek yükünü önlemek için tüm yol tabanlı erişimin ad tabanlı erişime geçirilmesini önerir. Bkz. Yol tabanlı yeniden yönlendirme.

Important

Çakışmaları önlemek için, dış 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.

Harici veritabanı tabloları

Important

Yabancı bir tabloyu yönetilen tabloya dönüştürmek Genel Önizleme aşamasındadır.

Yabancı tabloları yönetilen tablolara dönüştürmenin önkoşulları şunlardır:

  • Veri biçimi: Yabancı tablo Delta Lake biçimini kullanmalıdır. Parquet için tek seferlik dönüştürme gerçekleştirmek için bkz. Delta Lake'e Dönüştürme.
  • Çalışma zamanı: Databricks Runtime 17.3 veya üzeri.
  • Tablo türü: Hive meta veri deposu (HMS) tablo türü bir dış HMS tablosu olmalıdır. Tablo yönetilen bir HMS tablosuysa komut başarısız olur.
  • İzinler: OWNER veya MANAGE tablosundaki izinler ve CREATE üzerindeki EXTERNAL LOCATIONizinler.

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

SET MANAGED komutu, DEEP CLONE gibi alternatif yaklaşımlara kıyasla kesinti süresini en aza indirir veya tamamen ortadan kaldırır.

Dış tablolar

Dış tablolar için dönüştürme işlemi iki adımlı bir yaklaşım kullanır:

  1. İlk veri kopyalama (kapalı kalma süresi yok): Komut, tablo verilerini ve Delta işlem günlüğünü dış konumdan yönetilen konuma kopyalar. Harici tablodaki aktif okuyucular ve yazıcılar kesintiye uğramadan çalışmaya devam eder.
  2. Yönetilen konuma geçme (kısa kapalı kalma süresi):İlk adım sırasında dış konuma yapılan işlemeler yönetilen konuma taşınır ve tablo meta verileri yeni yönetilen konumu kaydedecek şekilde güncelleştirilir. Bu adım sırasında, dış konuma yapılan tüm yazma işlemleri geçici olarak engellenir ve yazma kesintisine neden olur. Databricks Runtime 16.4 LTS veya üzeri üzerindeki okuyucular kapalı kalma süresi yaşamaz, ancak Databricks Runtime 15.4 LTS ve altındaki okuyucular kapalı kalma süresiyle karşılaşabilir.

Aşağıdaki tabloda, kaynak tablonun boyutuna göre tahmini kapalı kalma süresi ve 0,5-2 GB/CPU çekirdek/dakika tahmini aktarım hızı gösterilmektedir:

Tablo boyutu Önerilen küme boyutu Tahmini veri kopyalama süresi Tahmini okuyucu ve yazıcı kesinti süresi
100 GB veya daha az 32 çekirdekli / Ekstra Büyük SQL veri ambarı Yaklaşık 6 dk veya daha az Yaklaşık 1-2 dakika veya daha az
1 Terabayt (TB) 64 çekirdekli / 2X-Large SQL deposu Yaklaşık 30 dk ~1-2 dk
10 TB (terabayt) 256 çekirdekli / 4X Büyük SQL ambarı Yaklaşık 1,5 saat ~1-5 dk

Note

Kapalı kalma süresi, dosya boyutu, dosya sayısı ve işleme sayısı gibi faktörlere göre farklılık gösterebilir.

Yabancı tablolar

Yabancı tablo dönüştürme kesinti süresi, MOVE veya COPY kullanıp kullanmamanıza bağlıdır:

  • MOVE için, dış tablolar için açıklandığı gibi kesinti yaşanabilir. Bkz. Dış tablolar.
  • için COPY, dönüştürme işlemi kaynak tabloyu yönetilen depolama konumuna kopyalayarak verilerin iki ayrı kopyasını oluşturduğundan kapalı kalma süresini yönetmek sizin sorumluluğunuzdadır. Dış katalogdaki kaynak tabloya okuma ve yazmaları devre dışı bırakmak ve iş yüklerini yeni yönetilen tabloyu kullanmak üzere geçirmek sizin sorumluluğunuzdadır.

Yönetilen tabloya dönüştürme

Katalog Gezgini veya SQL kullanarak dış tabloyu dönüştürün veya SQL kullanarak yabancı tabloyu dönüştürün.

Katalog Gezgini'ni (Beta) kullanan dış tablolar

Important

Catalog Gezgini kullanılarak dış tabloları yönetilen tablolara dönüştürme işlemi Beta sürümündedir.

Katalog Gezgini'nde şemadaki bir veya daha fazla dış tabloyu bir kerede dönüştürebilirsiniz.

  1. Katalog Gezgini'nde dönüştürmek istediğiniz tabloya veya şemaya gidin.

  2. Bu tablo hakkında (tablo ayrıntı sayfası) veya Bu şema hakkında (şema ayrıntı sayfası) altında İyileştirmeleri keşfet'e tıklayın.

  3. Unity Kataloğu ile yönetilen tablolara neden geçilmeli? iletişim kutusunda Devam'a tıklayın.

    Devam düğmesi içeren Unity Kataloğu yönetilen tablolarına neden geçiş yapılmalı iletişim kutusu

  4. Dönüştürmek istediğiniz dış tabloları seçin. İletişim kutusunu bir tablo ayrıntı sayfasından açtıysanız, Katalog Gezgini tablonuzu önceden seçer. Ek tablolar bulmak için arama çubuğunu kullanın. Yönetilen tablolar seçilemez.

    Önceden seçili dış tabloyu ve kullanılamayan bir yönetilen tabloyu gösteren tablo seçimi sayfası

  5. Dönüştürme not defteri oluştur'a tıklayın.

  6. İsteğe bağlı olarak, not defteri için bir ad girin. Varsayılan olarak, bu işlem not defterini giriş klasörünüzde kaydeder. Gözat’a tıklayın ve farklı bir konuma kaydedin.

    Ad alanını ve Gözat seçeneğini gösteren Dönüştürme not defteri oluşturma iletişim kutusu

  7. Not defterinde en iyi yöntemleri gözden geçirin ve tüm önkoşulları karşıladığınızdan emin olun.

  8. YÖNETILEN Sorgular hücresiniSET çalıştırın.

Hücre çalıştırıldıktan sonra, tablo türü Katalog Gezgini'nde EXTERNAL yerine MANAGED olarak görüntülenir. Durum hemen güncelleştirilmezse sayfayı yenileyin.

SQL kullanan dış tablolar

Dış tablonuzda Apache Iceberg okumalarının (UniForm) etkinleştirilip etkinleştirilmediğine bağlı olarak aşağıdaki komutlardan birini çalıştırın. Tablonuzda Iceberg okumalarının etkinleştirilip etkinleştirilmediğini doğrulamak için bkz. Iceberg okumalarının etkinleştirildiğini doğrulama.

  • Iceberg okumaları etkin olmayan Unity Kataloğu dış tabloları için aşağıdaki komutu çalıştırın:

    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ı zaten etkin olan Unity Kataloğu dış tabloları için aşağıdaki komutu çalıştırın:

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

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

Tablo dönüştürme işleminden sonra mevcut okuma ve yazma akışları başarısız olur. Yol tabanlı yeniden yönlendirmeyi otomatik olarak kullanmak için akışları aynı yapılandırmalarla yeniden başlatın. Okuyucularınızın ve yazarlarınızın yönetilen tabloyla çalıştığını doğrulayın. Bkz . Akış davranışı.

Siz el ile kapatmadığınız sürece tahmine dayalı iyileştirme dönüştürme işleminden sonra otomatik olarak etkinleştirilir. Bkz. Tahmine dayalı iyileştirmenin etkinleştirilip etkinleştirilmediğini doğrulama.

Azure Databricks, geri alma işlemine izin vermek için Unity Kataloğu dış konumunuzdaki verileri 14 gün boyunca saklar. Bkz. Yönetilen tablo dönüştürmesini geri alma. 14 gün sonra, tahmine dayalı iyileştirme etkinleştirildiğinde Azure Databricks depolamayı geri kazanmak ve maliyet tasarrufu yapmak için bu verileri otomatik olarak siler. Tahmine dayalı iyileştirmeyi kapatırsanız, depolamayı kendiniz geri almak için 14 gün sonra yeni dönüştürülen yönetilen tabloda (Databricks Runtime 17.3 LTS veya üzeri veya Sunucusuz işlem gerektirir) komutunu çalıştırın VACUUM .

VACUUM my_converted_table

Note

Tahmine dayalı iyileştirme etkinleştirildiğinde bile Unity Kataloğu dış konumunuzdaki veriler 14 gün sonra silinemeyebilir. Örneğin, yönetilen tablo seyrek kullanıldığında veya küçük olduğunda bu durum oluşabilir. Önceki veriler kalırsa, el ile çalıştırarak VACUUM kaldırın.

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

SQL kullanan yabancı tablolar

Important

Yabancı bir tabloyu yönetilen tabloya dönüştürmek Genel Önizleme aşamasındadır.

Unity Kataloğu yabancı tablonuzu Unity Kataloğu yönetilen tablosuna dönüştürmek için aşağıdaki komutu çalıştırın:

ALTER TABLE source_table SET MANAGED {MOVE | COPY}
  • source_table

    Unity Kataloğu'nda birleştirilmiş mevcut bir yabancı tablo.

  • MOVE

    Tabloyu yönetilen tabloya dönüştürür ve dış katalogdaki kaynak tabloya erişimi devre dışı bırakır.

    • Dış katalog veya yol tabanlı erişim aracılığıyla erişim, tabloyu dönüştürdükten sonra başarısız olur. Tablodaki tüm okuyucuların ve yazarların erişim için Unity Kataloğu ad alanını kullanması gerekir. Örneğin:

      SELECT * FROM catalog_name.schema_name.table_name;
      
    • Yol tabanlı erişim desteklenmez ve tabloyu dönüştürdükten sonra başarısız olur. Örneğin:

      SELECT * FROM delta.`protocol://path/to/table`;
      
    • Okuyucu/yazıcı sürümü ve istemci uyumluluğu gereksinimleri , Önkoşullar ve Eski okuyucular ve yazarlar bölümünde açıklananlarla aynıdır.

    • Tahminsel iyileştirme, el ile yapılandırmadığınız sürece INHERIT olarak ayarlanır. Tahmine dayalı iyileştirmenin etkinleştirilip etkinleştirilmediğini denetlemek için bkz. Tahmine dayalı iyileştirmenin etkinleştirilip etkinleştirilmediğini doğrulama.

  • COPY

    Dış katalogdaki kaynak tabloya erişimi değiştirmeden veya devre dışı bırakmadan tabloyu yönetilen tabloya dönüştürür.

    • Yönetilene dönüştürme sırasında, dönüştürme işlemi verileri kaynak tablodan yabancı tablo için tanımlanan yönetilen depolama konumuna kopyalar ve iki ayrı kopya oluşturur: yeni yönetilen tablo ve dış katalogdaki kaynak tablo.
    • Okuma ve yazma işleminin başarısız olduğu durumlardan farklı olarak MOVE , kullanırken COPYdış katalogdaki kaynak tabloda okuma ve yazmaları düzgün bir şekilde devre dışı bırakmak ve iş yüklerinin yeni kataloğa geçirildiğinden emin olmak sizin sorumluluğunuzdadır.

Tablo dönüştürme işleminden sonra, yabancı tabloyu kullanarak tüm akış işlerini (okuma veya yazma) yeniden başlatmanız ve okuyucularınızın ve yazarlarınızın yönetilen tabloyla çalıştığını doğrulamanız gerekir.

Dönüştürmeden önce, kaynak tabloyu dış kataloğa bırakırsanız Unity Kataloğu yabancı tabloyu da bırakır. Tabloyu yönetilen tabloya dönüştürdükten sonra, kaynak tabloyu dış kataloğa bırakmak Unity Kataloğu yönetilen tablosunu etkilemez.

Veriler kopyalanırken komut kesintiye uğrarsa yeniden başlatın. Komut kaldığı yerden devam eder.

Warning

Databricks, aynı tabloda eşzamanlı olarak birden çok SET MANAGED komut çalıştırmaktan kaçınmanızı önerir ve bu da tutarsız bir tablo durumuna yol açabilir.

Dönüştürmeyi doğrulama

Tablonuzun yönetilen tabloya başarıyla dönüştürüldüğünü doğrulamak için tablonun TypeMANAGEDolup olmadığını denetleyin. Aşağıdakilerden birini yapabilirsiniz:

  • Yeni bir sekme açın ve Katalog Gezgini'ne gidin. Ayrıntılar sekmesinde, Bu tablo hakkında altında, tablo TürüYönetilen olarak görüntülenir.

  • Aşağıdaki SQL komutunu çalıştırarak tabloyu Type denetleyin:

    DESCRIBE EXTENDED catalog_name.schema_name.table_name
    

    Birden çok tabloyu aynı anda denetlemek veya denetimi komut dosyasıyla çalıştırmak için bunun yerine information_schema.tables öğesini sorgulayın:

    SELECT table_type FROM system.information_schema.tables
    WHERE table_catalog = 'catalog_name' AND table_schema = 'schema_name' AND table_name = 'table_name';
    

Eski okuyucular ve yazarlar

Databricks, tablo geçmişi saklama dahil olmak üzere tüm özelliklerini kullanmak için tüm okuyucuları ve yazarları Databricks Runtime 15.4 LTS veya üzeri sürümlere SET MANAGEDyükseltmenizi önerir.

Databricks Runtime 15.3 veya altında okuyucularınız veya yazarlarınız varsa kullanmaya SET MANAGED devam edebilirsiniz. Ancak, yönetilen bir tabloya dönüştürdükten sonra geçmiş commit’lere zaman damgasına göre değil, yalnızca sürüme göre zaman yolculuğu yapabilirsiniz.

14 gün içinde harici bir tabloya geri dönerseniz, dönüştürmeden önce yapılan geçmiş commit'lere zamanda yolculuk yeniden etkinleştirilir. Dönüştürme ile geri alma işlemi arasında, dönüştürülen yönetilen tabloya yapılan commit'ler için zaman damgaları kullanılarak zaman yolculuğu desteklenmez. Bkz. Yönetilen tablo dönüştürmesini geri alma.

Databricks Runtime 15.3 veya altı ile dönüştürmeden sonra bir tabloya yazmak, inCommitTimestamp özelliğinin kaldırılmasını gerektirir:

ALTER TABLE <table_name> DROP FEATURE inCommitTimestamp;

Yol tabanlı yeniden yönlendirme

Databricks Runtime 18.1 ve sonraki sürümlerde, bir dış tabloyu Unity Kataloğu yönetilen tablosuna dönüştürdükten sonra, yol tabanlı okuma ve yazma işlemleri önceki dış konuma otomatik olarak yeni yönetilen konuma yönlendirilir. Yol tabanlı okuma, SELECT * FROM delta.`/path/to/my_table` gibi bir koddur. Yol tabanlı yeniden yönlendirme, depolama yollarını kullanan eski kodun yeniden düzenleme yapmadan çalışmaya devam etmesi için izin vererek yönetilen tablolara geçiş için gereken süreyi ve çabayı azaltır.

Yabancı tablo dönüşümleri yol tabanlı erişimi yeniden yönlendirmez.

Düşük gecikme süreli kullanım örnekleri için Azure Databricks yol tabanlı erişimi ad tabanlı erişime geçirmenizi önerir. Yol tabanlı yeniden yönlendirme, her yol tabanlı okuma veya yazma için birkaç yüz milisaniye ek yük ekler ve eski Delta günlüklerinin Unity Kataloğu dış konumunuzda etkin kalmasını gerektirir. Ad tabanlı okuma ve yazma işlemleri ek performans yüküne sahip değildir. Bkz. Yol tabanlı kodu ad tabanlı koda taşıma.

Yol tabanlı kodu ad tabanlı koda geçirme

Yol tabanlı yeniden yönlendirme kullanmamaya karar verirseniz, eski kodu geçirebilirsiniz. Geçiş için, yol tabanlı referansları ad tabanlı referanslarla değiştirin.

Aşağıdaki kod örneği, dosyalara yol tabanlı bir tablo başvurusu içerir:

SELECT * FROM delta.`/path/to/customers_table`;

Yol tabanlı başvuruyu, aşağıdaki kodda olduğu gibi bir dış tabloya ad tabanlı başvuruyla değiştirin:

SELECT * FROM catalog_name.schema_name.customers_table;

Akış davranışı

Yol tabanlı yeniden yönlendirme ile akış, aşağıdaki Databricks Runtime sürümlerinde okuma ve yazma işlemleri destekler:

  • Okuma işlemleri Databricks Runtime 18.1 ve sonraki sürümleri için desteklenir.
  • Yazma işlemleri Databricks Runtime 18.2 ve üzerinde desteklenir.

Dönüştürmeden sonra, önceki tablo konumundan okuma veya önceki tablo konumuna yazmaktan kaçınmak için tüm akış işlerini yeniden başlatmanız gerekir.

Yol tabanlı akış okuma ve yazma işlemleri başarısız olur ve sonraki denetim noktasında bir geçiş mesajıyla durur.

  • Okumalar için akış şu hatayı oluşturur: DELTA_STREAMING_INTERRUPTED_BY_MANAGED_TABLE_CONVERSION: The table at <path> has been converted to a Unity Catalog managed table. The stream has been stopped to ensure data consistency. Restart the stream and it will automatically resume from the last committed offset using the converted table.
  • Yazma işlemleri için, dönüştürmeden sonraki ilk mikro toplu işlem şu hatayı oluşturur: Operation not allowed: STREAMING WRITE cannot be performed on a table with redirect feature. The no redirect rules are not satisfied [].

Hataları çözmek için akışları aynı yapılandırmalarla yeniden başlatın. Yol tabanlı erişim otomatik olarak yönetilen tabloya yönlendirilir.

Yol tabanlı yeniden yönlendirme sınırlamaları için bkz. Sınırlamalar.

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

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

VERSIONED_CLONE_INTERNAL_ERROR.EXISTING_FILE_VALIDATION_FAILED

Dönüştürme başarısız olursa, her zaman aynı Databricks Runtime sürümünü kullanarak yeniden deneyin. Meta veriler sürümler arasında farklı şekilde seri hale getirilebilir ve bu da farklı bir VERSIONED_CLONE_INTERNAL_ERROR.EXISTING_FILE_VALIDATION_FAILED Databricks Runtime sürümünde dönüştürmeyi yeniden denediğinizde hataya neden olur.

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

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çerli tablo durumu değilse), 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ğinizi doğrulayın.

Dosya doğrulama hatası

komutu, SET MANAGED tablonun en son anlık görüntüsündeki tüm dosyaları yeni yönetilen tablo konumuna kopyalandığını doğrular. Eksik dosyalar varsa, komut bir DELTA_ALTER_TABLE_SET_MANAGED_FAILED.FILE_VALIDATION_FAILED hatayla başarısız olur.

Bu sorunu çözmek için:

  1. Geçirilemeyen dosyaları belirlemek için Spark sürücü günlüklerinizi denetleyin.
  2. Bu dosyaların kaynak dış tablo konumunda bulunduğunu ve erişilebilir olduğunu doğrulayın.
  3. komutunu yeniden deneyin ALTER TABLE ... SET MANAGED .

Sorun devam ederse Databricks desteğine başvurun.

Yönetilen tablo dönüştürmeyi geri alma

Important

Geri alma komutları sunucusuz işlem veya Databricks Runtime 17.3 LTS ve üzeri gerektirir.

Dış tablo

Dış tabloyu yönetilen tabloya dönüştürdükten sonra, 14 gün içinde UNSET MANAGED komutunu kullanarak işlemi geri alabilirsiniz. Bu, tablo meta verilerini özgün dış konuma işaret eden şekilde güncelleştirir. Databricks, dönüştürmeden sonra yönetilen konuma yapılan tüm yazmaları korur.

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

ALTER TABLE catalog.schema.my_managed_table UNSET MANAGED;

Aşağıdaki bilgileri göz önünde bulundurun:

  • Geri alma komutu kesilirse veya başarısız olursa, yeniden denemek için yeniden çalıştırın.
  • Dönüştürmede olduğu gibi, geri alma işleminden sonra akış işlerinizi yeniden başlatmanız gerekir.
  • Dönüştürme ile geri alma arasında yönetilen konumda yapılan commit’ler, sürüme göre zaman yolculuğunu mümkün kılar; ancak zaman damgasına göre değil.
  • Geri alma işleminin ardından yedi gün sonra Azure Databricks yönetilen konumdaki verileri otomatik olarak siler.

Harici tablo: MOVE

Warning

Yönetilen tabloyu silmeden önce UNSET MANAGED komutunu çalıştırmanız zorunludur. Tabloyu önce çalıştırmadan bırakmak UNSET MANAGED veri kaybına veya tutarsızlıklara neden olabilir.

komutunu kullanarak tablo geçişini geri alabilir ve dış katalogdaki kaynak tabloya UNSET MANAGED yeniden erişim sağlayabilirsiniz. Geri alma işlemi iki adım gerektirir: önce tabloyu yeniden dış tabloya dönüştürmeniz, ardından tabloyu yabancı tablo olarak yeniden federasyona dahil etmek için dış tabloyu silmeniz gerekir.

  1. Dış tabloya geri dönmek için aşağıdaki komutu çalıştırın:
ALTER TABLE catalog.schema.my_managed_table UNSET MANAGED
  1. Tabloyu yabancı bir tabloyla yeniden birleştirmek için aşağıdaki komutu kullanarak dış tabloyu bırakın:
DROP TABLE catalog.schema.my_managed_table

Yabancı tablo, sonraki katalog eşitlemesinin ardından kullanılabilir.

Aşağıdaki bilgileri göz önünde bulundurun:

  • Dönüştürme ile geri alma arasında harici konumda yaptığınız commit’ler için, zaman damgasına göre değil sürüme göre zaman yolculuğu yapabilirsiniz.
  • Geri aldıktan yedi gün sonra Databricks yönetilen konumdaki verileri siler.

Harici tablo: COPY

Tablo geçişini geri almak için, dış katalogdaki UNSET MANAGED kaynak tablo değiştirilmediğinden komutunu çalıştırmanız gerekmez. Yönetilen tabloyu silin; Databricks, bir sonraki katalog eşitlemesinden sonra onu yeniden yabancı tablo olarak federasyona dahil eder.

Geri alma işlemini doğrulama

Harici ve yabancı tablolar için geri alma işlemlerini ayrı şekilde doğrulayın.

Dış tablolar

Yönetilen tablonuzun bir dış tabloya başarıyla geri döndürüldüğünü doğrulamak için tablonun Type olup EXTERNALolmadığını denetleyin. Aşağıdakilerden birini yapabilirsiniz:

  • Yeni bir sekme açın ve Katalog Gezgini'ne gidin. Ayrıntılar sekmesinde, Bu tablo hakkında'nın altında, tablo TürüDış olarak görüntülenir.

  • Aşağıdaki SQL komutunu çalıştırarak tabloyu Type denetleyin:

    DESCRIBE EXTENDED catalog_name.schema_name.table_name
    

    Birden çok tabloyu aynı anda denetlemek veya denetimi komut dosyasıyla çalıştırmak için bunun yerine information_schema.tables öğesini sorgulayın:

    SELECT table_type FROM system.information_schema.tables
    WHERE table_catalog = 'catalog_name' AND table_schema = 'schema_name' AND table_name = 'table_name';
    

Harici veritabanı tabloları

Yönetilen tablonuzun başarılı bir şekilde yabancı bir tabloya geri döndürüldüğünü doğrulamak için tablonun Type olup FOREIGNolmadığını denetleyin. Aşağıdakilerden birini yapabilirsiniz:

  • Yeni bir sekme açın ve Katalog Gezgini'ne gidin. Ayrıntılar sekmesinde, Bu tablo hakkında'nın altında, Tablo TürüYabancı olarak görüntülenir.

  • Aşağıdaki SQL komutunu çalıştırarak tablo türünü denetleyin:

    SELECT table_type FROM system.information_schema.tables
    WHERE table_catalog = 'catalog_name' AND table_schema = 'schema_name' AND table_name = 'table_name';
    

    table_type sütun olarak FOREIGNgörüntülenir.

Note

Yabancı tablo dönüştürmelerini veya geri alma işlemlerini doğrulamak için DESCRIBE EXTENDED kullanmayın. Federasyon bu komut için katalog davranışını kullandığından hive_metastore , tablonun gerçek durumundan bağımsız olarak tablosunu Type olarak EXTERNALgösterir.

Gelişmiş konular

Bu bölüm, yabancı ve dış tabloları yönetilen tablolara dönüştürmeye yönelik gelişmiş konular içerir.

Şema veya katalog düzeyinde dönüştürme

Şema veya katalog düzeyinde tabloları dönüştürmeyi otomatikleştirmek için aşağıdaki iki seçeneğiniz vardır:

  • Her tabloyu tek tek dönüştürmek için şemalarınızdaki tablolarınızda yineleme yapın.

  • Şemaların veya katalogların tamamını aynı anda dönüştürmek için discoverx labs projesini kullanın:

    df = (dx.from_tables("prod.*.*")
    .with_sql("ALTER TABLE {full_table_name} SET MANAGED;")
    .apply())
    

Bkz. Databricks Labs ve discoverx.

Yabancı katalogda tablo oluşturma

Yabancı katalogda dış veya yönetilen tablolar oluşturabilirsiniz. Davranış şema yapılandırmasına bağlıdır:

  • Tutkal veya eHMS şemaları ya da Unity Kataloğu'nda yönetilen konuma sahip şemalar için: CREATE TABLE foreign_catalog.schema.table çalıştırıldığında, bir Unity Kataloğu içinde yönetilen veya harici bir tablo oluşturur. Databricks tabloyu dış kataloğa göndermez veya eşitlemez.
  • İç Hive meta veri deposu bağlantılarındaki şemalar için: Yabancı bir şemada tablo oluşturmaya çalışırsanız, yabancı bir tablo oluşturur ve hive_metastoreda da bir tablo oluşturur.
  • Eski çalışma alanı Hive meta veri deposu için: Bu, okuma ve yazma federasyonuna sahip olduğundan, harici katalogda bir tablo oluşturursanız, iç Hive meta veri deposunda da bir tablo oluşturulur.

DBFS tarafından desteklenen yabancı tablolar

DBFS destekli tabloyu dönüştürürken Databricks, DBFS yolunun geçerli eşlemesini dış tablonun bulut yolu konumu olarak depolar.

Sınırlama

Dış veya yabancı tabloları yönetilen tablolara dönüştürmenin aşağıdaki sınırlamaları vardır:

  • Dönüştürmeden sonra ancak geri almadan önce yapılan işlemeler için tablo geçmişi sürüme göre zaman yolculuğuna izin verir ancak zaman damgasına göre izin vermez.

  • OpenSharing komutuyla SET MANAGED tam olarak uyumlu değil. Open OpenSharing desteklenir, ancak Databricks-Databricks paylaşımı alıcı tablosunun yönetilen konumunu otomatik olarak güncelleştirmez. Siz tabloyu yeniden paylaşana kadar alıcı eski konumdan okumaya devam eder. Tabloyu yeniden paylaşabilmek için aşağıdaki komutları çalıştırın:

    ALTER SHARE <share_name> REMOVE TABLE <table_name>;
    ALTER SHARE <share_name> ADD TABLE <table_name> AS <table_share_name> WITH HISTORY;
    
  • Unity Kataloğu meta veri deponuzun, kataloğunuzun veya şemanızın varsayılan yönetilen konumu kaynak tablonun depolama konumundan farklı bir bulut bölgesindeyse, bulut sağlayıcınızdan bölgeler arası ek veri aktarımı maliyetlerine neden olabilirsiniz.

    Şemanızın ve kataloğunuzun konumunu doğrulamak için aşağıdaki komutları çalıştırın:

    DESC SCHEMA EXTENDED <catalog_name>.<schema_name>;
    
    DESC CATALOG EXTENDED <catalog_name>;
    

    Meta veri deponuzun konumunu doğrulamak için aşağıdaki komutlardan birini çalıştırın:

    DESC METASTORE; -- Option 1
    SELECT * FROM system.information_schema.metastores; -- Option 2
    

Yol tabanlı yeniden yönlendirme sınırlamaları:

  • Dönüştürmeden sonra akış işlerini yeniden başlatmanız gerekir. Bkz . Akış davranışı.
  • Yol tabanlı yeniden yönlendirme yalnızca geçiş işlemi için geriye dönük uyumluluğa sahiptir ve Unity Kataloğu yönetilen tablolarına yeni yol tabanlı erişimi etkinleştirmez.

Yabancı tablo sınırlamaları: