Aracılığıyla paylaş


Uyumluluk Modu

Önemli

Bu özellik Genel Önizleme aşamasındadır.

Uyumluluk Modu'nu kullanarak Unity Kataloğu yönetilen tablolarını, gerçekleştirilmiş görünümleri ve akış tablolarını dış sistemlerden okuyabilir ve Azure Databricks'te en iyi performansı koruyabilirsiniz. Bu özellik, tablolarınızın herhangi bir Delta Lake veya Iceberg istemcisi tarafından erişilebilen salt okunur sürümlerini otomatik olarak oluşturur.

Genel Bakış

Yönetilen bir tabloda, akış tablosunda veya gerçekleştirilmiş görünümde etkinleştirildiğinde, Uyumluluk Modu tablonuzun seçilen bir konumda salt okunur bir sürümünü oluşturur. Bu uyumluluk sürümü hem Delta Lake hem de Iceberg biçimleri için v1 meta verilerini içerir ve aşağıdaki özellikleri sağlar:

  • Herhangi bir Delta Lake istemcisiyle birlikte çalışabilirlik: Amazon Athena, Microsoft Fabric, Snowflake ve Amazon Redshift gibi istemcilerden doğrudan depolamadan veya Unity REST API aracılığıyla akış tabloları veya gerçekleştirilmiş görünümler de dahil olmak üzere yönetilen tablolarınızı okuyun
  • Tüm Iceberg istemcileriyle birlikte çalışabilirlik: Iceberg REST kataloğu aracılığıyla Apache Spark, Apache Trino ve Snowflake gibi Iceberg istemcilerinden akış tabloları veya gerçekleştirilmiş görünümler de dahil olmak üzere yönetilen tablolarınızı okuyun
  • Ayarlayıp unutma otomasyonu: Uyumluluk sürümleri kapsamında veri ve meta veriyi otomatik olarak yenileme ve yenileme aralıklarını neredeyse gerçek zamanlı olarak yapılandırma yeteneği

Önkoşullar

Tabloda Uyumluluk Modu'nu etkinleştirmek için Unity Kataloğu'nu kullanıyor olmanız gerekir. Yalnızca Unity Catalog akış tabloları, Unity Catalog gerçekleştirilmiş görünümleri ve Unity Catalog yönetilen tabloları desteklenir. Unity Kataloğu dış tabloları desteklenmez.

Ayrıca, Unity Kataloğu'nda uygun ayarlar ve izinlerle kayıtlı bir dış konumunuz olduğunu doğrulayın:

  • Hedef konumun depolama hesabınızda mevcut olması ve boş olması gerekir.
  • Hedef konumun veya üst klasörlerinden herhangi birinin Unity Kataloğu'nda dış konum olarak kaydedilmesi gerekir.
  • Dış konum için CREATE EXTERNAL TABLE ayrıcalığına sahip olmalısınız.
  • Hedef konumun ve üst veya alt klasörlerin son 7 gün içinde başka bir tablo için Uyumluluk Modu konumu olarak kullanılmamış olması gerekir.

Tablolarda Uyumluluk Modu'nu etkinleştirme

Akış tabloları, materyalize edilmiş görünümler ve yönetilen sığ klonlar için tablo oluşturma sırasında aşağıdaki tablo özelliklerini ayarlayın:

CREATE [STREAMING TABLE | MATERIALIZED VIEW | TABLE] my_catalog.my_schema.my_table
TBLPROPERTIES(
  'delta.universalFormat.enabledFormats' = 'compatibility',
  'delta.universalFormat.compatibility.location' = '<location>'
)

Yalnızca Unity Kataloğu yönetilen tabloları için, var olan bir tabloyu değiştirdiğinizde Uyumluluk Modu'nu da etkinleştirebilirsiniz:

-- For existing managed tables
ALTER TABLE my_catalog.my_schema.my_table SET TBLPROPERTIES(
  'delta.universalFormat.enabledFormats' = 'compatibility',
  'delta.universalFormat.compatibility.location' = '<location>'
)

Uyumluluk sürümünün ilk kez oluşturulması bir saat kadar sürer. Çalıştığını onaylamak için tabloyu hemen el ile yenileyebilirsiniz .

Uyarı

Tam üç bölümlü tablo adını (catalog.schema.table_name) belirtmeniz gerekir. Örneğin, için users.john.my_tableuserskatalogdur ve john şemadır.

Uyumluluk Modu'nu etkinleştirip etkinleştirmediğini denetleyin

Tablonuzda Uyumluluk Modu'nu etkinleştirdiğini doğrulamak için tablo özelliğinin delta.universalFormat.enabledFormats = 'compatibility' mevcut olup olmadığını denetleyin. Bu özelliği tablonuzun ayrıntılar sekmesindeki Katalog Gezgini kullanıcı arabiriminde görüntüleyebilirsiniz.

Not defterinde aşağıdaki SQL komutlarını da çalıştırabilirsiniz:

DESC DETAIL my_catalog.my_schema.my_table
DESC EXTENDED my_catalog.my_schema.my_table

Çıktıda şu özellikleri arayın:

  • delta.universalFormat.enabledFormats: "compatibility" – Uyumluluk Modunun etkinleştirildiğini gösterir
  • delta.universalFormat.compatibility.location – Uyumluluk Modu sürümünün konumunu gösterir

Yenileme aralıklarını yapılandırma

Unity Kataloğu yönetilen tablolarında, yenileme aralığını ayarlayarak Uyumluluk Modu sürümünün ne sıklıkta yenilendiğini yapılandırabilirsiniz:

-- Evaluate whether a refresh is needed after every commit (fastest)
ALTER TABLE my_catalog.my_schema.my_table SET TBLPROPERTIES(
  'delta.universalFormat.enabledFormats' = 'compatibility',
  'delta.universalFormat.compatibility.location' = '<location>',
  'delta.universalFormat.compatibility.targetRefreshInterval' = '0 MINUTES'
)

-- Refresh hourly (default)
ALTER TABLE my_catalog.my_schema.my_table SET TBLPROPERTIES(
  'delta.universalFormat.enabledFormats' = 'compatibility',
  'delta.universalFormat.compatibility.location' = '<location>',
  'delta.universalFormat.compatibility.targetRefreshInterval' = '1 HOUR'
)

Varsayılan yenileme aralığıdır 1 HOUR. Yenileme aralığının 1 saatin altına ayarlanması önerilmez ve yenilemelerin daha sık gerçekleşmesini sağlamaz. Bunun istisnası, yenileme aralığını 0 MINUTES olarak ayarladığınızda. Bu durumda, Azure Databricks her işlemeden sonra değişiklikleri denetler ve gerekirse bir yenileme tetikler.

Akış tabloları ve gerçekleştirilmiş görünümler için yenileme aralığı gerekli değildir. 0 MINUTES varsayılan değerdir.

Uyarı

Yenileme sürelerini önemli ölçüde etkileyen değişiklikler (sütun yeniden adlandırma veya tür genişletmeyi etkinleştirme gibi) hedef yenileme aralığından bağımsız olarak saatlik olarak gerçekleştirilir.

El ile yenileme

Uyumluluk sürümünün yenilenmesini el ile tetiklemek için:

REFRESH [TABLE | STREAMING TABLE | MATERIALIZED VIEW] my_catalog.my_schema.my_table SYNC UNIFORM

Manuel yenileme, Uyumluluk Modu'nun düzgün çalışıp çalışmadığını test etmek veya uyumluluk sürümünüzün sonraki bir okumadan önce güncel olduğunu garanti etmek için kullanışlıdır. Ancak otomatik yenilemeleri beklemek daha uygun maliyetli olabilir.

Verileri ve meta veri oluşturma durumunu izleme

Uyumluluk Modu, verileri ve meta verileri otomatik ve zaman uyumsuz olarak oluşturur. Unity Kataloğu yönetilen tablolarında, oluşturma varsayılan olarak saatlik olarak veya yapılandırılan yenileme aralığınıza göre gerçekleşir. Akış tabloları ve materyalize edilmiş görünümler için, yeni işlemler olduğunda tablo güncellemelerinden sonra oluşturma gerçekleşir.

Verilerin ve meta verilerin başarıyla oluşturulup oluşturulmadığını denetlemek için:

  1. Kaynak tablonuzun en son sürümünü bulmak için kullanın DESCRIBE HISTORY :

    DESC HISTORY my_catalog.my_schema.my_table
    

    DESCRIBE HISTORY en son kaynak tablo sürümünü denetlemek için komut

    Bu komut, Delta Lake sürümü ve zaman damgası da dahil olmak üzere Yenileme geçmişini Uyumluluk Modu'na döndürür. Üst satır en son sürümü ve zaman damgasını içerir.

  2. Uyumluluk Modu'nun ilgili sürümünü bulmak için kullanın DESCRIBE EXTENDED :

    DESC EXTENDED my_catalog.my_schema.my_table
    

    DESCRIBE EXTENDED komutu ile Uyumluluk Modu sürümünü denetleme

    Tekdüzen Uyumluluk Bilgileri altındaki alanları arayın:

    • Son Yenilenen Sürüm: Uyumluluk Modu ile son güncelleştirilen Delta Lake sürümü
    • Son Yenileme: Son yenilemenin zaman damgası

    Tablo sürümü 1. adımda bulunan sürümle eşleşiyorsa Uyumluluk Modu up-to-date olur.

  3. Uyumluluk sürümünün kendisinde kullanın DESC HISTORY :

    DESC HISTORY delta.\`<compatibility_location>\`
    

    DESCRIBE HISTORY uyumluluk sürümü geçmişini denetleme komutu

  4. Katalog Gezgini'nde, uyumluluk sürümü için meta veri alanlarını görüntüleyin. Delta Lake sürümü 3. adımda bulunan sürümle eşleşiyorsa Uyumluluk Modu up-to-date olur.

    En son tablo meta veri sürümünü denetleme

Maliyetleri izleme

Tahmine Dayalı İyileştirme , Uyumluluk Modu için otomatik yenilemeler sağlayan işlem kümesini işler. İlişkili maliyetleri görüntülemek için sistem faturalama tablolarını sorgula:

SELECT
  DATE_TRUNC('DAY', start_time) AS day,
  SUM(usage_quantity) AS dbus
FROM
  system.storage.predictive_optimization_operations_history
WHERE
  operation_type = "COMPATIBILITY_MODE_REFRESH"
GROUP BY 1
ORDER BY 1 DESC;

Bu sorgu yalnızca otomatik yenilemeler için kullanımı bildirir. El ile yenileme maliyetleri, işlemlerinizle ilişkilendirilir ve bu maliyetleri ayrı ayrı izlemenin doğrudan bir yolu yoktur. Genellikle, el ile tetikleyicinin maliyeti, özgün tabloya ilk yazma işleminin maliyetiyle orantılıdır.

Kullanılmayan veri dosyalarını kaldırma

Tablonuzun uyumluluk sürümünde kullanılmayan veri dosyalarını kaldırmak için kullanın VACUUM:

VACUUM delta.'<compatibility_mode_location_path>';

Uyumluluk Modu konum yolunu bulmak için Uyumluluk Modunun DESCRIBE EXTENDEDetkin olup olmadığını denetleme'deki komutu kullanın. Çıktıda delta.universalFormat.compatibility.location değeri konumu belirtir.

Dış istemcilerden uyumluluk sürümlerini okuma

Uyumluluk sürümlerinden verileri okumak için herhangi bir Delta Lake veya Iceberg istemcisini kullanabilirsiniz. Amazon Athena, Snowflake (Delta okuyucu) ve Fabric örnekleri için aşağıya bakın.

Amazon Athena

  1. Athena Sorgu Düzenleyicisi'nde, belirtilen konuma sahip bir dış tablo oluşturun:

    CREATE EXTERNAL TABLE <table_name>
    LOCATION '<compatibility_location>'
    TBLPROPERTIES ('table_type' = 'DELTA')
    
  2. Tabloyu okuyun:

    SELECT * FROM <table_name>
    

Snowflake Delta Lake okuyucusu

  1. Depolama konumuna erişmek için depolama tümleştirmesi oluşturun ( snowflake belgelerine bakın).

  2. Delta Lake biçiminde bir dış tablo oluşturun:

    CREATE OR REPLACE EXTERNAL TABLE <table_name>
    WITH LOCATION = @<my_location>
    FILE_FORMAT = (TYPE = PARQUET)
    TABLE_FORMAT = DELTA
    AUTO_REFRESH = false
    REFRESH_ON_CREATE = false;
    
  3. Tabloyu yenileyin (Snowflake'de Delta Lake biçiminde otomatik yenileme desteklenmez):

    ALTER EXTERNAL TABLE <table_name> REFRESH;
    
  4. Tabloyu okuyun:

    SELECT * FROM <table_name>;
    

Microsoft Fabric

  1. Fabric kapasitesi, çalışma alanı ve Synapse not defteri oluşturun.

  2. Uyumluluk konumundaki verileri içeren bir göl evi oluşturun.

  3. Dosyaları Delta Lake tablosu olarak okuyun:

    spark.read.format("delta").load("Files/<path_to_data>")
    

Unity REST API'sinden uyumluluk sürümlerini okuma

Uyumluluk Modu etkin olan tablolar, Unity REST API aracılığıyla özel parametrelerle ada göre okunabilir. Akış tabloları için aşağıdaki API parametresini ayarlayın:

GET /api/2.1/unity-catalog/tables/{full_name}?read_streaming_table_as_managed=true

Gerçekleştirilmiş görünümler için aşağıdaki API parametresini ayarlayın:

GET /api/2.1/unity-catalog/tables/{full_name}?read_materialized_view_as_managed=true

Iceberg REST kataloğundan uyumluluk sürümlerini okuma

Uyumluluk Modu etkin tablolar, Iceberg REST kataloğu kullanılarak herhangi bir Iceberg istemcisinden okunabilir. Uyumluluk Modu hem Delta Lake hem de Iceberg tablo biçimleri için otomatik olarak çalışır.

Kurulum gereksinimleri

  1. Meta veri deposunda dış veri erişimini etkinleştirin.
  2. Şemaya ayrıcalık ver EXTERNAL USE SCHEMA .
  3. Azure Databricks Kişisel Erişim Belirteci (PAT) oluşturun.

Apache Spark yapılandırması

bin/spark-sql --packages org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.8.0,org.apache.iceberg:iceberg-azure-bundle:1.8.0 \
  --conf "spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions" \
  --conf spark.sql.catalog.catalog_name=org.apache.iceberg.spark.SparkCatalog \
  --conf spark.sql.catalog.catalog_name.type=rest \
  --conf spark.sql.catalog.catalog_name.uri=<workspace-url>/api/2.1/unity-catalog/iceberg-rest \
  --conf spark.sql.catalog.catalog_name.token=<PAT> \
  --conf spark.sql.catalog.catalog_name.warehouse=<uc-catalog-name>

Daha fazla bilgi için bkz. Apache Spark ile Iceberg tablolarını kullanma.

Snowflake yapılandırması

CREATE OR REPLACE CATALOG INTEGRATION my_uc_int
  CATALOG_SOURCE = ICEBERG_REST
  TABLE_FORMAT = ICEBERG
  CATALOG_NAMESPACE = '<uc-schema-name>'
  REST_CONFIG = (
    CATALOG_URI = '<workspace-url>/api/2.1/unity-catalog/iceberg-rest'
    CATALOG_NAME = '<uc-catalog-name>'
    ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS
  )
  REST_AUTHENTICATION = (
    TYPE = BEARER
    BEARER_TOKEN = '<PAT>'
  )
  ENABLED = TRUE;

CREATE OR REPLACE ICEBERG TABLE my_table
  CATALOG = 'my_uc_int'
  CATALOG_TABLE_NAME = '<uc-st/mv-name>';

Uyumluluk Modunu Devre Dışı Bırak

Uyumluluk Modu'nu devre dışı bırakmak için ilgili tablo özelliğinin ayarını kaldırın:

-- For UC managed tables
ALTER TABLE my_table UNSET TBLPROPERTIES('delta.universalFormat.enabledFormats')

-- For streaming tables and materialized views
CREATE OR REPLACE [STREAMING TABLE | MATERIALIZED VIEW] my_table
TBLPROPERTIES('delta.universalFormat.enabledFormats' = '')

Uyarı

Uyumluluk Modu'nu sıfırlamak, verileri ve meta veri oluşturmayı hemen durdurur. 7 gün sonra ilişkili veriler ve meta veriler silinir. Bu 7 günlük süre içinde, aynı tabloda Uyumluluk Modu'nu yeniden etkinleştirerek verileri ve meta verileri geri yükleyebilirsiniz.

Sınırlamalar

  • Salt okunur erişim: Uyumluluk versiyonu salt okunur durumdadır. Uyumluluk sürümüne yazamazsınız.
  • RLS/CLS desteği yok: Row-Level Güvenliği (RLS) veya Column-Level Güvenliği (CLS) olan tablolarda Uyumluluk Modu'nu etkinleştiremezsiniz.
  • Bölüm sütununu yeniden adlandırma yok: Bölüm sütunu yeniden adlandırma, Uyumluluk Modu etkin tablolarda desteklenmez. Veri sütununu yeniden adlandırma desteklenir.
  • Sınırlı tablo özellikleri: Uyumluluk sürümünde aşağıdaki özellikler kullanılamaz:
    • Harmanlama sütunları
    • Birincil anahtarlar
    • Zaman Yolculuğu
    • Veri akışını değiştirme
    • Özel karakterler içeren sütun adları (yeniden adlandırılacak)