Aracılığıyla paylaş


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

Önemli

Bu özellik Genel Önizleme aşamasındadır ve şu anda yalnızca katılan müşteriler tarafından kullanılabilir. Önizlemeye katılmak için bu formu doldurarak başvurun. Bu özellik yalnızca HMS ve Tutkal Federasyonu kullanılarak birleştirilmiş yabancı tabloların dönüştürülmesini destekler.

Bu sayfada, yabancı bir tabloyu yönetilen tabloya dönüştürmek için nasıl kullanılacağı SET MANAGED açıklanmaktadır.

SET MANAGED genel bakış

Azure Databricks'te SET MANAGED yabancı bir tabloyu Unity Kataloğu yönetilen tablosuna dönüştürmek için özelliğini kullanın. SET MANAGED aşağıdaki avantajları sunar:

  • 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.
  • Tahmine dayalı iyileştirmeden yararlanma. Tabloyu yönetilen tabloya dönüştürürken tahmine dayalı iyileştirme olarak ayarlanır INHERIT, yani ayarı şema veya katalog düzeyinden devralır. Varsayılan olarak, bu şu anda devre dışıdır. Dönüştürülen tabloda tahmine dayalı iyileştirmeyi etkinleştirmek için, tablonun değerini ALTER TABLE <table_name> ENABLE PREDICTIVE OPTIMIZATION yerine ENABLED olarak ayarlayan INHERIT komutunu çalıştırabilirsiniz.

Önkoşullar

  • Veri biçimi: Yabancı tablonun veri biçimi Delta Lake olmalıdır. Parquet için tek seferlik dönüştürme gerçekleştirmek için bkz. Delta Lake'e Dönüştürme.
  • Tablo türü: HMS tablo türü bir dış HMS tablosu olmalıdır. Tablo yönetilen bir HMS tablosuysa komut başarısız olur.
  • Çalışma Zamanı: Databricks Runtime 17.3 veya üzeri
  • İzinler: OWNER veya MANAGE tablo üzerindeki izinler ve CREATEEXTERNAL LOCATION üzerindeki izinler

Sözdizimi

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}

Parametreler

  • source_table

    Unity Kataloğu'nda var olan bir harici tablo. Yabancı tablolar, dış katalog tarafından yönetilen verileri ve meta verileri içerir. Dönüştürmeden önce, kaynak tabloyu dış kataloğa bırakırsanız, yabancı tablo Unity Kataloğu'nda da bırakılır. Tablo yönetilen tabloya dönüştürüldükten sonra, kaynak tablo dış kataloğa düşürüldüğünde Unity Catalog'un yönetilen tablosu bu durumdan etkilenmez.

  • MOVE

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

    • Tablo dönüştürüldükten sonra dış katalog veya yol tabanlı erişim üzerinden erişim 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.

    • Tüm okuyucuların ve yazarların ad tabanlı erişimi kullanması gerekir. Ö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 olur. Örneğin:

      SELECT * FROM delta.`protocol://path/to/table`;
      
    • Azure Databricks dışındaki istemcilerin, Unity Catalog tarafından yönetilen tablolarda okuma işlemlerini desteklemesi gerekir. Bkz. Uyumluluk Modu.

    • Tablolarınıza erişen okuyucuların ve yazarların Databricks Runtime veya Azure Databricks dışı dış istemciler olup olmadığını görmek için Access Insights panosunu kullanın.

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

    • Okuyucular veya yazarlar dönüştürme sırasında tabloya eriştiğinde kesinti süresi oluşabilir. Daha fazla bilgi için bkz . Dış tabloyu yönetilen Unity Kataloğu tablosuna dönüştürme.

    • Komutunuz kesintiye uğrarsa, yönetilene dönüştürme tamamlanmamış olduğundan tablo dış tablo olarak bırakılmış olabilir. Komutu tamamlamak için dış tabloda yeniden çalıştırın SET MANAGED .

    • 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 denetleme.

    • Geri Alma: Tablo geçişini geri almak ve dış katalogdaki kaynak tabloya yeniden erişim kazanmak için komutunu çalıştırın UNSET MANAGED . Tablo, komutu çalıştırdıktan sonra bir dış tabloya dönüşür. Tabloyu yabancı bir tabloya döndürmek için, tabloyu kaldırın; sonraki katalog eşitlemesinde yabancı olarak yeniden federe edilecektir.

      ALTER TABLE catalog.schema.my_managed_table UNSET MANAGED
      

      Uyarı

      Tabloyu bırakmadan önce UNSET MANAGED'yi MUTLAKA çalıştırmalısınız. Tabloyu bırakmadan önce UNSET MANAGED'yi çalıştırmamak, sisteminizi kötü bir duruma sokabilir ve veri kaybına ya da tutarsızlıklara neden olabilir.

    • Geri alırsanız, dönüştürme ve geri alma arasında dış konuma yaptığınız işlemeler sürüme göre zaman yolculuğu yapılabilir ancak zaman damgasına göre değil. Geri alma işleminin ardından yedi gün sonra, yönetilen konumdaki veriler silinir. Databricks Runtime 15.4 LTS veya üzeri sürümlerdeki okuyucular ve yazarlar için, dönüştürmeden sonra ancak geri alma işleminden önce yapılan işlemelerin tablo geçmişi sürüme göre zaman yolculuğu yapabilir, ancak zaman damgasına göre yapılamaz.

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

      • Yabancı tabloyu kullanarak akış işlerini (okuma veya yazma) yeniden başlatın
      • Okuyucularınızın ve yazarlarınızın yönetilen tabloyla çalıştığından emin olun.
  • 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, kaynak tablodaki veriler yabancı tablo için tanımlanan yönetilen depolama konumuna kopyalanır ve iki ayrı kopya oluşturulur: 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.
    • Geri Alma: Tablo geçişini geri almak için, kaynak tablo dış katalogda kesintiye uğramadığından komutunu çalıştırmanız UNSET MANAGED gerekmez. Tabloyu düşürün ve sonraki katalog eşitlemesinde harici olarak yeniden federasyona eklenecektir.

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

Tablo dönüştürüldüyse, Type altındaki col_name olarak MANAGED altındaki data_type gösterilir.

Bilinen sınırlamalar

Yabancı 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.

  • 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 yabancı 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 Azure Databricks'in denetimi dışında uygular. Şemanızın, kataloğunuzun ve meta veri deponuzun konumlarını denetlemek için aşağıdaki komutları kullanın:

    -- Check schema location
    DESCRIBE SCHEMA EXTENDED catalog_name.schema_name;
    
    -- Check catalog location
    DESCRIBE CATALOG EXTENDED catalog_name;
    
    -- Check metastore location
    DESCRIBE METASTORE;
    

FAQ

Tabloları oluşturabilir ve yabancı katalogdaki tabloları dönüştürebilir miyim?

Evet, bir 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. Tablo dış kataloğa gönderilmez veya senkronize edilmez.
  • İç 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: Okuma ve yazma federasyon modeli olduğundan, yabancı katalogda bir tablo oluşturursanız, dahili Hive meta veri deposunda da bir tablo oluşturur.

Yabancı tablolarım DBFS destekliyse ne olur?

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

Şema veya katalog düzeyinde dönüştürebilir miyim?

Şemalarınızdaki tabloları tek tek dönüştürmek için yineleyebilir veya discoverx labs projesini kullanarak şemaların veya katalogların tamamını aynı anda dönüştürebilirsiniz:

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