Delta Lake ve Apache Iceberg için Unity Catalog’un yönetilen tabloları

Unity Catalog tarafından yönetilen tablolar, Azure Databricks'te Delta Lake ve Apache Iceberg için varsayılan ve önerilen tablo türüdür. Unity Kataloğu tüm okuma, yazma, depolama ve iyileştirme sorumluluklarını yönetir. Dış veya yabancı Delta Lake tablolarını Unity Catalog tarafından yönetilen tablolara dönüştürme konusuna bakın.

Yönetilen tablolar için veri dosyaları, bunları içeren şemada veya katalogda depolanır. Unity Kataloğu'nda yönetilen bir depolama konumu belirtme hakkında bilgi için bkz. ....

Dış ve yabancı tablolara kıyasla, yönetilen tablolar depolama ve sorgulama, kendilerini otomatik olarak koruma ve optimize etmek için daha az maliyetlidir ve açık API'ler aracılığıyla harici istemcilere erişilebilir kalır.

Azure Databricks'te desteklenen tüm dillerde ve ürünlerde yönetilen tablolarla çalışabilirsiniz. Yönetilen tabloları oluşturmak, güncelleştirmek, silmek veya sorgulamak için belirli ayrıcalıklara sahip olmanız gerekir. Bkz. Unity Kataloğu'nda ayrıcalıkları yönetme.

Note

Bu sayfada yalnızca Unity Kataloğu yönetilen tabloları açıklanmaktadır. Eski Hive meta veri deposundaki yönetilen tablolar için bkz. Eski Hive meta veri deposundaki veritabanı nesneleri.

Unity Kataloğu tarafından yönetilen tabloların avantajları

Unity Kataloğu yönetilen tabloları depolama maliyetlerini ve sorgu hızlarını iyileştirir ve Delta Lake ve Apache Iceberg için üçüncü taraf araçlarla birlikte çalışabilirlik sağlar. Bu yönetilen tablolarda veri yönetimi ve performansı basitleştirmek için dosya boyutu sıkıştırma ve akıllı istatistik toplama gibi yapay zeka destekli teknolojiler kullanılır.

Yönetilen tablolar, Delta Lake ve Apache Iceberg istemcilerinden erişime izin vererek birlikte çalışabilirliği destekler. Bkz. dış sistemleri kullanarak Databricks verilerine erişme.

Aşağıdaki özellikler Unity Kataloğu yönetilen tablolarında benzersizdir ve dış tablolar ile yabancı tablolar için kullanılamaz:

Feature Benefits Konfigürasyon
Katalog taahhütleri Tablolar arasında çoklu ifade işlemleri , daha hızlı sorgu planlaması, uygulanabilir şema ve kısıtlama değişiklikleri ve harici motorlardan güvenli yazımlar sağlar. Varsayılan olarak kapalıdır. Açmak için delta.feature.catalogManaged tablo özelliğini ayarlayın. Bkz. Katalog işlemelerini etkinleştirme.
Tahmine dayalı iyileştirme Veri düzenini ve hesaplamasını yapay zeka kullanarak otomatik olarak optimize eder, manuel bakım işlemleri yapmadan. Databricks, depolama ve işlem maliyetlerini azaltmak için tüm yönetilen tablolar için tahmine dayalı iyileştirmenin etkinleştirilmesini önerir. 11 Kasım 2024 veya sonrasında oluşturulan hesaplar için varsayılan olarak etkinleştirilmiştir. Azure Databricks mevcut hesaplar için bunu yavaş yavaş etkinleştiriyor. Yapılandırmak için bkz. Tahmine dayalı iyileştirmeyi etkinleştirme.
Çok deyimli işlemler Bir veya daha fazla tablo üzerinde birden çok SQL ifadesini, ACID garantileriyle tek bir atomik işlem olarak çalıştırın. Değişikliklerin tümü ya birlikte başarılı olur ya da birlikte geri alınır. Depolanmış prosedürler ve SQL betik yazma için kullanım. Varsayılan olarak kapalıdır. Bir işlem modu seçmek için Transaction modlarına bakınız.
Yönetilen Apache Iceberg tablolarına yönelik yazma işlemleri Özel Önizleme aşamasındadır.
Otomatik sıvı kümeleme Öngörücü optimizasyona sahip tablolar için, sorgu desenleri değiştikçe kümeleme anahtarlarını otomatik olarak seçer ve günceller; bu da performansı artırmak ve maliyetleri düşürmektir. Varsayılan olarak kapalıdır. Yapılandırmak için bkz. Sıvı kümelemasını etkinleştirme.
Meta veri önbelleğe alma İşlem meta verilerinin bellek içi önbelleğe alınması, bulutta depolanan işlem günlüğüne yapılan talepleri en aza indirerek sorgu performansını artırır. Varsayılan olarak etkindir. Yapılandırılamaz.
Tam metin arama dizinleri search ve isearch işlevlerini kullanarak metin sütunlarında alt dize ve anahtar sözcük aramalarını hızlandırır. Azure Databricks, eşleşen satır içermeyen dosyaları atlar, bu da taranan veri miktarını azaltır. Varsayılan olarak kapalıdır. CREATE SEARCH INDEX ile oluşturun.
Beta'da. Databricks Runtime 18.2 ve üzeri gerektirir.
Komut sonrasında DROP TABLE otomatik dosya silme Yönetilen bir tablo bıraktığınızda, Azure Databricks, kurtarma süresi dolduktan sonra (varsayılan 7 gün) bulut depolama dosyalarını siler ve depolama maliyetlerini azaltır. Dış tablolar için dosyaları depolama demetinden el ile silmeniz gerekir. Varsayılan olarak etkindir. Kurtarma süresini katalog veya şema düzeyinde yapılandırabilirsiniz. Bkz. Yönetilen tabloyu silme.

Dış sistemleri kullanarak Databricks verilerine erişme

Yönetilen tablolar, Delta Lake ve Apache Iceberg istemcilerinden erişime izin vererek birlikte çalışabilirliği destekler.

Unity Catalog, açık API'ler ve kimlik bilgisi sağlama mekanizması aracılığıyla Trino, DuckDB, Apache Spark ve Daft gibi harici altyapıların yanı sıra Dremio gibi Iceberg REST kataloğuyla tümleşik altyapıların yönetilen tablolara erişmesini sağlar. Açık API'leri desteklemeyen dış istemciler için, herhangi bir Delta Lake veya Apache Iceberg istemcisini kullanarak yönetilen tabloları okumak için Uyumluluk Modu'nu kullanabilirsiniz. açık kaynak bir protokol olan OpenSharing, dış iş ortakları ve platformlarla güvenli ve yönetilen veri paylaşımı sağlar.

Desteklenen harici motorların listesi için tümleştirmelere bakın veya bu listede yer almıyorsa motorunuzun belgelerine göz atın.

Aşağıdaki açık API'ler dış sistemlerin Unity Kataloğu yönetilen tablolarına erişmesine izin verir:

  • Unity REST API'sinde Delta Lake istemcileri için yönetilen Delta Lake tablolarına okuma, yazma ve oluşturma erişimi vardır.
  • Iceberg REST Kataloğu (IRC), Apache Iceberg istemcileri için yönetilen Apache Iceberg tablolarına okuma, yazma ve erişim sağlamış ve Apache Iceberg okumaları etkin Delta Lake tablolarına yalnızca okunma erişimi sunmaktadır.

Her iki API de, idare ve güvenlik denetimlerini koruyarak, istekte bulunan Azure Databricks sorumlusunun ayrıcalıklarını devralan, geçici ve kapsamlı kimlik bilgileri sağlayan kimlik bilgisi dağıtımını destekler.

OpenSharing, dış iş ortaklarına ve platformlara güvenli ve yönetilen veri erişimi sağlayan bir açık kaynak protokolüdür. İş ortaklarına geçici, salt okunur erişim vermek için OpenSharing'i kullanabilirsiniz.

Yönetilen tablolara yapılan tüm okuma ve yazma işlemleri, var oldukları yerde tablo adlarını, katalog ve şema adlarını kullanmalıdır. Örneğin, catalog_name.schema_name.table_name. Unity Kataloğu erişim denetimlerini atladığı ve yönetilen tablo özelliklerinin düzgün çalışmasını önlediği için Unity Kataloğu yönetilen tablolarına yol tabanlı erişim desteklenmez ( Uyumluluk Modu dışında).

Yönetilen tablo oluşturma

Yönetilen tablo oluşturmak için aşağıdakilere sahip olmanız gerekir:

  • USE SCHEMA tablonun üst şemasında.
  • Tablo'nun üst katalogunda USE CATALOG.
  • CREATE TABLE tablonun üst şemasında.

Boş bir yönetilen tablo oluşturmak için aşağıdaki söz dizimini kullanın. Yer tutucu değerlerini değiştirin:

  • <catalog-name>: Tabloyu içerecek kataloğun adı.
  • <schema-name>: Tabloyu içeren şemanın adı.
  • <table-name>: Tablonun adı.
  • <column-specification>: Her sütunun adı ve veri türü.

SQL

-- Create a managed Delta table
CREATE TABLE <catalog-name>.<schema-name>.<table-name>
(
  <column-specification>
);

-- Create a managed Iceberg table
CREATE TABLE <catalog-name>.<schema-name>.<table-name>
(
  <column-specification>
)
USING iceberg;

Python

saveAsTable() kullanarak yönetilen Delta Lake tablosu oluşturun:

from pyspark.sql.types import StructType, StructField, StringType

schema = StructType([StructField("<column-name>", StringType())])

spark.createDataFrame([], schema).write \
  .saveAsTable("<catalog-name>.<schema-name>.<table-name>")

Alternatif olarak, oluşturulan sütunlar ve tablo özellikleri gibi Delta'ya özgü seçenekler için API'yi kullanın DeltaTableBuilder :

from delta.tables import DeltaTable

DeltaTable.create(spark) \
  .tableName("<catalog-name>.<schema-name>.<table-name>") \
  .addColumn("<column-name>", "<data-type>") \
  .property("<key>", "<value>") \
  .execute()

Yönetilen bir Apache Iceberg tablosu oluşturun:

from pyspark.sql.types import StructType, StructField, StringType

schema = StructType([StructField("<column-name>", StringType())])

spark.createDataFrame([], schema).write \
  .format("iceberg") \
  .saveAsTable("<catalog-name>.<schema-name>.<table-name>")

Okuma ve yazma işlemlerinin performansını korumak için Azure Databricks yönetilen Apache Iceberg tablosu meta verilerini iyileştirmek için düzenli aralıklarla işlemler çalıştırır. Bu görev, Apache Iceberg tablosu üzerinde izinleri olan MODIFY sunucusuz işlem kullanılarak gerçekleştirilir. Bu işlem yalnızca tablonun meta verilerine yazar ve hesaplama, yalnızca görev süresi boyunca tabloya yönelik izinleri korur.

Note

Apache Iceberg tablosu oluşturmak için açıkça belirtin USING iceberg. Aksi takdirde Azure Databricks varsayılan olarak bir Delta Lake tablosu oluşturur.

Sorgu sonuçlarından veya DataFrame yazma işlemlerinden yönetilen tablolar oluşturabilirsiniz. Aşağıdaki makalelerde, Azure Databricks'te yönetilen tablo oluşturmak için kullanabileceğiniz birçok desenden bazıları gösterilmektedir:

Mevcut yönetilen tablonun kopyasını oluşturmak için clone komutunu kullanın. Yönetilen Delta Lake tabloları derin ve sığ kopyalamayı destekler. Yönetilen Apache Iceberg tabloları yalnızca derin kopyalamayı destekler. Bkz. Azure Databricks'te tablo kopyalama ve Yönetilen bir Iceberg tablosunu kopyalama.

Yönetilen tabloyu bırak.

Yönetilen bir tabloyu silmek için aşağıdakilere sahip olmanız gerekir:

  • MANAGE veya tablo sahibi olmanız gerekir.
  • USE SCHEMA tablonun üst şemasında.
  • Tablo'nun üst katalogunda USE CATALOG.

Yönetilen tabloyu bırakmak için aşağıdaki komutu çalıştırın:

SQL

DROP TABLE IF EXISTS catalog_name.schema_name.table_name;

Python

spark.sql("DROP TABLE IF EXISTS catalog_name.schema_name.table_name")

Alternatif olarak, Databricks Runtime 18.2 ve sonraki sürümleri için kullanın spark.catalog.dropTable():

spark.catalog.dropTable("catalog_name.schema_name.table_name", ifExists=True)

Unity Kataloğu, yanlışlıkla bırakılan yönetilen tabloları kurtarmak için komutunu destekler UNDROP TABLE . Varsayılan olarak, tablolar silindikten sonra 7 gün boyunca geri yüklenebilir. Kurtarma süresi sona erdikten sonra Azure Databricks temel alınan veri dosyalarını 48 saat içinde bulut kiracınızdan siler.

Kurtarma süresini yapılandırma

Important

Yapılandırılabilir kurtarma süresi Genel Önizleme aşamasındadır.

Bırakılan yönetilen tabloların ne kadar süreyle kurtarılabilir kalacağını katalog veya şema düzeyinde yapılandırabilirsiniz. Kurtarma dönemleri her iki düzeyde de ayarlanırsa, şema düzeyi ayarı bu şemadaki tablolar için önceliklidir.

Kurtarma süresini yapılandırmak için katalog veya şemada ayrıcalığınız veya sahipliğiniz olmalıdır MANAGE . Bu ayar yalnızca yapılandırıldıktan sonra bırakılan tablolar için geçerlidir. Zaten silinmiş olan tabloları etkilemez.

İyileşme süresi 0 saat olabilir, bu da iyileşmeyi engelliyor, ya da 7 ila 30 gün olabilir. Daha uzun bir süre kritik verilerin yanlışlıkla düşmesine karşı korurken, daha kısa bir süre bırakılan verileri daha hızlı siler; böylece sık sık tablo oluşturulan ve bırakılan ETL boru hatlarında depolama maliyetlerini azaltır. 0 olarak ayarlandığında, silinen tablolar UNDROP ile geri getirilemez. Azure Databricks, veri dosyalarını bulut depolama alanından 48 saat içinde siler.

Kurtarma süresini ayarlamak için, ALTER CATALOG yan tümcesiyle birlikte ALTER SCHEMA veya RETAIN DROPPED TO kullanın:

SQL

-- Set a 30-day recovery period on a catalog
ALTER CATALOG my_catalog RETAIN DROPPED TO 30 DAYS;

-- Set a 7-day recovery period on a schema (overrides the catalog setting)
ALTER SCHEMA my_catalog.my_schema RETAIN DROPPED TO 7 DAYS;

Python

spark.sql("ALTER CATALOG my_catalog RETAIN DROPPED TO 30 DAYS")
spark.sql("ALTER SCHEMA my_catalog.my_schema RETAIN DROPPED TO 7 DAYS")

Ayrıca, yan tümcesiyle RETAIN DROPPED FOR bir katalog veya şema oluştururken kurtarma süresini de ayarlayabilirsiniz:

SQL

CREATE CATALOG my_catalog RETAIN DROPPED FOR 30 DAYS;
CREATE SCHEMA my_catalog.my_schema RETAIN DROPPED FOR 7 DAYS;

Python

spark.sql("CREATE CATALOG my_catalog RETAIN DROPPED FOR 30 DAYS")
spark.sql("CREATE SCHEMA my_catalog.my_schema RETAIN DROPPED FOR 7 DAYS")

Geçerli kurtarma süresini denetlemek için komutunu çalıştırın DESCRIBE EXTENDED. Çıktı bir Recovery Period Hours satır içerir:

SQL

DESCRIBE CATALOG EXTENDED my_catalog;
DESCRIBE SCHEMA EXTENDED my_catalog.my_schema;

Python

spark.sql("DESCRIBE CATALOG EXTENDED my_catalog").show()
spark.sql("DESCRIBE SCHEMA EXTENDED my_catalog.my_schema").show()