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

Databricks, dış ve yabancı tablolarla karşılaştırıldığında aşağıdaki avantajlardan yararlanmak için yönetilen tabloların kullanılmasını önerir:

  • Daha düşük depolama ve işlem maliyetleri.
  • Tüm istemci türlerinde daha hızlı sorgu performansı.
  • Otomatik tablo bakımı ve iyileştirme.
  • Açık API'ler aracılığıyla dış istemciler için güvenli erişim.
  • Delta Lake ve Apache Iceberg biçimleri için destek.
  • En son platform özelliklerine otomatik yükseltmeler.

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 çok deyimli işlemlere , meta verileri doğrudan Unity Kataloğu'ndan sunarak daha hızlı sorgu planlamasına, zorunlu kılınabilir şema ve kısıtlama değişikliklerine ve dış altyapılardan güvenli yazma işlemlerine olanak tanır. 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 El ile bakım işlemleri gerektirmeden yapay zeka kullanarak veri düzeninizi ve işleminizi otomatik olarak iyileştirir. Databricks, depolama ve işlem maliyetlerini azaltmak için tüm yönetilen tablolar için tahmine dayalı iyileştirmenin etkinleştirilmesini önerir.
Otomatik olarak çalışır:
11 Kasım 2024 tarihinde veya sonrasında oluşturulan tüm yeni hesaplar için varsayılan olarak etkindir. Geçerli hesaplar için Azure Databricks varsayılan olarak tahmine dayalı iyileştirmeyi aşamalı olarak etkinleştirir. Bkz. Tahmine dayalı iyileştirmenin etkinleştirilip etkinleştirilmediğini doğrulama.
Yapılandırmak için bkz. Tahmine dayalı iyileştirmeyi etkinleştirme.
Çok deyimli işlemler ACID garantileri ile bir veya daha fazla tabloda birden çok SQL deyimini tek bir atomik işleme olarak çalıştırmanıza olanak tanır. Değişikliklerin tümü ya birlikte başarılı olur ya da birlikte geri alınır. Kritik öneme sahip veri ambarı iş yüklerinde saklı yordamlar ve SQL betikleri için kullanın.
Yönetilen Delta Lake tablolarına yazan işlemler Genel Önizleme aşamasındadır.
Yönetilen Apache Iceberg tablolarına yazan işlemler Özel Önizleme aşamasındadır.
Varsayılan olarak kapalıdır.
Etkileşimli olmayan işlemler için BEGIN ATOMIC ... END; veya etkileşimli işlemler için BEGIN TRANSACTION; ... COMMIT; kullanın. Bkz. İşlem modları.
Otomatik sıvı kümeleme Tahmine dayalı iyileştirmeye sahip tablolar için, sıvı kümeleme akıllı bir şekilde kümeleme anahtarlarını seçer ve performansı geliştirmek ve maliyetleri düşürmek için sorgu desenleri değiştikçe bunları otomatik olarak güncelleştirir. 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ını, bulutta depolanan işlem günlüğüne yönelik istekleri 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. Bir dizin uygulandığında Azure Databricks, eşleşen satırlar içeremeyecek dosyaları atlayarak taranan veri miktarını azaltır.
Beta sürümünde ve Databricks Runtime 18.2 ve üzerini gerektirir.
Varsayılan olarak kapalıdır.
CREATE SEARCH INDEX ile oluşturun.
Komut sonrasında DROP TABLE otomatik dosya silme Yönetilen bir tabloyu DROP yaparsanız Azure Databricks kurtarma süresi dolduktan (varsayılan 7 gün) sonra bulut depolamadaki veri 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 istemcilerinin yönetilen Apache Iceberg tablolarına okuma, yazma ve oluşturma erişimine ve Apache Iceberg okumaları etkin (UniForm) ile Delta Lake tablolarına salt okunur erişime sahiptir.

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.

Kurtarma süresi 0 saate (kurtarmayı devre dışı bırakmak için) veya 7-30 gün (dahil) arasında ayarlanabilir. Daha uzun bir kurtarma süresi (30 güne kadar), kritik üretim verilerinin yanlışlıkla düşmesine karşı ek koruma sağlar. Daha kısa bir kurtarma süresi veya 0 olarak ayarlanması, bırakılan verilerin daha hızlı silinmesine neden olur; ETL işlem hatlarının bir parçası olarak sık sık tablo oluşturan ve bırakan iş yüklerinde maliyet tasarrufu için kullanışlıdır. Kurtarma süresini 0 olarak ayarlamak, silinen tabloların UNDROP kullanılarak kurtarılamayacağı anlamına gelir. Veri dosyaları, tablonun bırakılmasından sonraki 48 saat içinde bulut depolama alanından silinir.

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()