Delta Tablolarını Iceberg istemcileriyle okumak için UniForm kullanma

Delta Evrensel Biçimi (UniForm), Iceberg okuyucu istemcileriyle Delta tablolarını okumanızı sağlar. Bu özellik Databricks Runtime 14.3 LTS veya üzerini gerektirir.

Önemli

Eski UniForm IcebergCompatV1 tablo özelliğine ilişkin belgeler için bkz . Eski UniForm IcebergCompatV1.

UniForm hem Delta Lake hem de Iceberg'in Parquet veri dosyalarından ve meta veri katmanından oluşmasından yararlanır. UniForm, Verileri yeniden yazmadan zaman uyumsuz olarak Iceberg meta verilerini otomatik olarak oluşturur, böylece Iceberg istemcileri Delta tablolarını Iceberg tablolarıymış gibi okuyabilir. Veri dosyalarının tek bir kopyası her iki biçime de hizmet eder.

Unity Kataloğu'nu Iceberg kataloğu olarak görev yapmak için dış bağlantı yapılandırabilirsiniz. Bkz . Unity Kataloğu Iceberg katalog uç noktasını kullanarak okuma.

UniForm, temel parquet veri dosyaları için sıkıştırma codec'i olarak snappy yerine zstd kullanır.

Not

UniForm meta veri oluşturma işlemi Delta tablolarına veri yazmak için kullanılan işlemde zaman uyumsuz olarak çalıştırılır ve bu da sürücü kaynak kullanımını artırabilir.

Gereksinimler

UniForm'un etkinleştirilmesi için aşağıdaki gereksinimleri karşılamanız gerekir:

Not

UniForm'un etkin olduğu bir tabloda silme vektörlerini etkinleştiremezsiniz. UniForm, silme vektörlerinin etkinleştirildiği mevcut bir tabloda etkinleştirilirken, UniForm silme vektörlerini devre dışı bırakır ve temizler ve gerektiğinde veri dosyalarını yeniden yazar.

Delta UniForm'un etkinleştirilmesi

Önemli

Delta UniForm'un etkinleştirilmesi Delta tablosu özelliğini IcebergCompatV2, bir yazma protokolü özelliğini ayarlar. Yalnızca bu tablo özelliğini destekleyen istemciler UniForm özellikli tablolara yazabilir. Bu özelliğin etkinleştirildiği Delta tablolarına yazmak için Databricks Runtime 14.3 LTS veya üzerini kullanmanız gerekir.

Tablo özelliğini sıfırlayarak UniForm'u delta.universalFormat.enabledFormats kapatabilirsiniz. Sütun eşleme etkinleştirildikten sonra kapatamazsınız ve Delta Lake okuyucu ve yazıcı protokolü sürümlerine yükseltmeler geri alınamaz.

Iceberg için UniForm desteğini etkinleştirmek için aşağıdaki tablo özelliklerini ayarlamanız gerekir:

'delta.enableIcebergCompatV2' = 'true'
'delta.universalFormat.enabledFormats' = 'iceberg'

UniForm kullanmak için sütun eşlemeyi de etkinleştirmeniz gerekir. Aşağıdaki örnekte olduğu gibi tablo oluşturma sırasında UniForm'un etkinleştirilmesi durumunda bu otomatik olarak etkinleştirilir:

CREATE TABLE T(c1 INT) TBLPROPERTIES(
  'delta.enableIcebergCompatV2' = 'true',
  'delta.universalFormat.enabledFormats' = 'iceberg');

Aşağıdaki söz dizimini kullanarak var olan bir tabloda UniForm'un etkinleştirilmesini sağlayabilirsiniz:

REORG TABLE table_name APPLY (UPGRADE UNIFORM(ICEBERG_COMPAT_VERSION=2));

Not

Bu söz dizimi, tablo özelliğini IcebergCompatV1kullanan UniForm'un Genel Önizleme sürümünden yükseltmek için de çalışır.

Bu söz dizimi, silme vektörlerini tablodan otomatik olarak devre dışı bırakır ve temizler. Iceberg uyumlu hale getirmek için mevcut dosyalar gerektiği şekilde yeniden yazılır.

UniForm'un ilk etkinleştirildiğinde zaman uyumsuz meta veri oluşturma işlemi başlar. Dış istemcilerin Iceberg kullanarak tabloyu sorgulayabilmesi için bu görevin tamamlanması gerekir. Bkz . Iceberg meta veri oluşturma durumunu denetleme.

Not

Iceberg okuyucu istemciniz olarak BigQuery kullanmayı planlıyorsanız, veri düzeni için BigQuery gereksinimini karşılamak için Azure Databricks'te olarak ayarlamanız spark.databricks.delta.write.dataFilesToSubdirtrue gerekir.

Bkz. Sınırlamalar.

UniForm ne zaman Iceberg meta verileri oluşturur?

Azure Databricks, Delta Lake yazma işlemi tamamlandıktan sonra Delta işlemini tamamlayan aynı işlemi kullanarak Iceberg meta veri oluşturma işlemini zaman uyumsuz olarak tetikler. Iceberg meta veri oluşturmayı el ile de tetikleyebilirsiniz. Bkz. Iceberg meta veri dönüştürmeyi el ile tetikleme.

Iceberg meta veri oluşturma ile ilişkili yazma gecikme sürelerini önlemek için sık işlemeleri olan Delta tabloları birden çok Delta işlemesini tek bir Iceberg işlemesinde paketleyebilir.

Delta Lake, her zaman yalnızca bir Iceberg meta veri oluşturma işleminin devam etmesini sağlar. İkinci bir eşzamanlı Iceberg meta veri oluşturma işlemini tetikleyecek işlemeler Delta'ya başarıyla işleme yapar, ancak zaman uyumsuz Iceberg meta veri oluşturma işlemini tetiklemez. Bu, sık işlemeleri olan iş yükleri için meta veri oluşturma için basamaklı gecikme süresini önler (işlemeler arasında saniyeler arası).

Bkz. Delta ve Iceberg tablo sürümleri.

Iceberg meta veri oluşturma durumunu denetleme

UniForm, meta veri oluşturma durumunu izlemek için Unity Kataloğu ve Iceberg tablosu meta verilerine aşağıdaki alanları ekler:

Meta veri alanı Açıklama
converted_delta_version Iceberg meta verilerinin başarıyla oluşturulduğu Delta tablosunun en son sürümü.
converted_delta_timestamp Iceberg meta verilerinin başarıyla oluşturulduğu en son Delta işlemesinin zaman damgası.

Azure Databricks'te aşağıdakilerden birini yaparak bu meta veri alanlarını gözden geçirebilirsiniz:

  • tarafından DESCRIBE EXTENDED table_namedöndürülen bölüm gözden geçirildiDelta Uniform Iceberg.
  • Katalog Gezgini ile tablo meta verilerini gözden geçirme.
  • Tablo almak için REST API kullanma.

Azure Databricks dışındaki tablo özelliklerini gözden geçirme hakkında bilgi edinmek için Iceberg okuyucu istemcinizin belgelerine bakın. OSS Apache Spark için aşağıdaki söz dizimini kullanarak bu özellikleri görebilirsiniz:

SHOW TBLPROPERTIES <table-name>;

Iceberg meta veri dönüştürmeyi el ile tetikleme

Delta tablosunun en son sürümü için Iceberg meta veri oluşturma işlemini el ile tetikleyebilirsiniz. Bu işlem zaman uyumlu bir şekilde çalıştırılır, yani tamamlandığında Iceberg'de bulunan tablo içeriği, dönüştürme işlemi başlatıldığında kullanılabilen Delta tablosunun en son sürümünü yansıtır.

Bu işlem normal koşullarda gerekli olmamalıdır, ancak aşağıdakilerle karşılaşırsanız yardımcı olabilir:

  • Otomatik meta veri oluşturma başarılı olmadan önce küme sonlandırlanır.
  • Hata veya iş hatası meta veri oluşturmayı kesintiye uğratır.
  • UniForm Iceberg meta veri gneration'sını desteklemeyen bir istemci Delta tablosuna yazar.

Iceberg meta veri oluşturma işlemini el ile tetikleme için aşağıdaki söz dizimini kullanın:

MSCK REPAIR TABLE <table-name> SYNC METADATA

Bkz. REPAIR TABLE.

Meta veri JSON yolu kullanarak okuma

Bazı Iceberg istemcileri, dış Iceberg tablolarını kaydetmek için sürümlenmiş meta veri dosyalarına bir yol sağlamanızı gerektirir. UniForm, Delta tablosunun yeni bir sürümünü Iceberg'e her dönüştürdüğünde yeni bir meta veri JSON dosyası oluşturur.

Iceberg'i yapılandırmak için meta veri JSON yollarını kullanan istemciler BigQuery'yi içerir. Yapılandırma ayrıntıları için Iceberg okuyucu istemcisi belgelerine bakın.

Delta Lake, aşağıdaki deseni kullanarak Iceberg meta verilerini tablo dizini altında depolar:

<table-path>/metadata/<version-number>-<uuid>.metadata.json

Azure Databricks'te aşağıdakilerden birini yaparak bu meta veri konumunu gözden geçirebilirsiniz:

  • tarafından DESCRIBE EXTENDED table_namedöndürülen bölüm gözden geçirildiDelta Uniform Iceberg.
  • Katalog Gezgini ile tablo meta verilerini gözden geçirme.
  • REST API ile aşağıdaki komutu kullanarak:
GET api/2.1/unity-catalog/tables/<catalog-name>.<schame-name>.<table-name>

Yanıt aşağıdaki bilgileri içerir:

{
    ...
          "delta_uniform_iceberg": {
              "metadata_location":  "<cloud-storage-uri>/metadata/v<version-number>-<uuid>.metadata.json"
    }
}

Önemli

Yol tabanlı Iceberg okuyucu istemcileri, geçerli tablo sürümlerini okumak için meta veri JSON yollarının el ile güncelleştirilmesini ve yenilenmesini gerektirebilir. Parquet veri dosyaları ile Delta tablosundan kaldırıldığından kullanıcılar güncel olmayan sürümleri kullanarak Iceberg tablolarını sorgularken hatalarla VACUUMkarşılaşabilir.

Unity Kataloğu Iceberg katalog uç noktasını kullanarak okuyun

Bazı Iceberg istemcileri Iceberg REST kataloğuna bağlanabilir. Unity Kataloğu, uç nokta /api/2.1/unity-catalog/icebergkullanılarak UniForm'un etkinleştirildiği Delta tabloları için Iceberg REST katalog API'sinin salt okunur bir uygulamasını sağlar. Bu REST API'yi kullanma hakkında ayrıntılı bilgi için Iceberg REST API belirtimlerine bakın.

Iceberg katalog API'sini desteklediği bilinen istemciler Apache Spark, Flink ve Trino'ları içerir. UniForm'un etkin olduğu Delta tablosunu içeren temel bulut nesne depolamasına erişimi yapılandırmanız gerekir. Yapılandırma ayrıntıları için Iceberg okuyucu istemcisi belgelerine bakın.

Diğer hizmetlerin Unity Kataloğu'na bağlanmasına izin vermek için bir Azure Databricks kişisel erişim belirteci oluşturup yapılandırmanız gerekir. Bkz. Azure Databricks otomasyonu için kimlik doğrulaması - genel bakış.

Aşağıda, OSS Apache Spark'ı UniForm'u Iceberg olarak okuyacak şekilde yapılandırmaya yönelik ayarlara bir örnek verilmiştir:

"spark.sql.extensions": "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions",
"spark.sql.catalog.unity"="org.apache.iceberg.spark.SparkCatalog",
"spark.sql.catalog.unity.catalog-impl": "org.apache.iceberg.rest.RESTCatalog",
"spark.sql.catalog.unity.uri": "<api-root>/api/2.1/unity-catalog/iceberg",
"spark.sql.catalog.unity.token":"<your_personal_access_token>",
"spark.sql.catalog.unity.io-impl": "org.apache.iceberg.aws.s3.S3FileIO

için <api-root>kişisel erişim belirtecini oluşturduğunuz çalışma alanının tam URL'sini kullanın.

Not

Bu yöntemi kullanarak Unity Kataloğu'ndaki tabloları sorgularken, nesne tanımlayıcıları aşağıdaki deseni kullanır:

unity.<catalog-name>.<schema-name>.<table-name>

Bu düzen, Unity Kataloğu'nda bulunan üç katmanlı adların aynılarını kullanır, ancak ek bir ön ek unityekler.

Delta ve Iceberg tablo sürümleri

Hem Delta Lake hem de Iceberg, tablo meta verilerinde depolanan tablo sürümlerini veya zaman damgalarını kullanarak zaman yolculuğu sorgularına izin verir.

Genel olarak, Iceberg ve Delta tablosu sürümleri işleme zaman damgasına veya sürüm kimliğine göre hizalanmaz. Bir Delta tablosunun belirli bir Iceberg tablosunun sürümüne karşılık gelen sürümünü doğrulamak isterseniz, Iceberg tablosunda ayarlanan ilgili tablo özelliklerini kullanabilirsiniz. Bkz . Iceberg meta veri oluşturma durumunu denetleme.

Sınırlamalar

Şu sınırlamalar geçerlidir:

  • UniForm, silme vektörlerinin etkinleştirildiği tablolarda çalışmaz. Bkz . Silme vektörleri nedir?.
  • UniForm etkin delta tabloları türleri desteklemez VOID .
  • Buzdağı istemcileri yalnızca UniForm'dan okuyabilir. Yazma işlemleri desteklenmez.
  • Buzdağı okuyucu istemcilerinin UniForm'a bakılmaksızın bireysel sınırlamaları olabilir. Seçtiğiniz istemcinin belgelerine bakın.
  • Delta Sharing alıcıları, UniForm etkinleştirildiğinde bile tabloyu yalnızca Delta olarak okuyabilir.

Değişiklik Veri Akışı, UniForm etkinleştirildiğinde Delta istemcilerinde çalışır, ancak Iceberg'de desteği yoktur.

UniForm tarafından kullanılan bazı Delta Lake tablo özellikleri bazı Delta Sharing okuyucu istemcileri tarafından desteklenmez. Bkz . Delta Sharing kullanarak verileri ve yapay zeka varlıklarını güvenli bir şekilde paylaşma.