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:
- Delta tablosunun Unity Kataloğu'na kaydedilmesi gerekir. Hem yönetilen hem de dış tablolar desteklenir.
- Tabloda sütun eşlemesi etkinleştirilmelidir. Bkz . Delta Lake sütun eşlemesi ile sütunları yeniden adlandırma ve bırakma.
- Delta tablosunun = 2 ve
minWriterVersion
>= 7 olmasıminReaderVersion
>gerekir. Bkz. Azure Databricks Delta Lake özellik uyumluluğunu nasıl yönetir?. - Tabloya yazma işlemleri Databricks Runtime 14.3 LTS veya üzerini kullanmalıdır.
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 IcebergCompatV1
kullanan 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.dataFilesToSubdir
true
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_name
dö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_name
dö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 VACUUM
karşı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/iceberg
kullanı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 unity
ekler.
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.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin