Aracılığıyla paylaş


Iceberg istemcileri aracılığıyla Delta tables okuma

Bu makalede, Azure Databricks'te Delta Lake ile depolanan tables üzerinde Iceberg okumalarını etkinleştirmeye yönelik ayrıntılar sağlanır. Bu özellik Databricks Runtime 14.3 LTS veya üzerini gerektirir.

Not

Bu işlev daha önce Delta Lake Evrensel Biçimi (UniForm) olarak adlandırılıyordu.

Unity Catalog'ın bir Iceberg cataloggörevi görmesi için bir dış bağlantı yapılandırabilirsiniz. Bkz. tablesDatabricks okuma.

Iceberg okumaları (UniForm) nasıl çalışır?

Hem Delta Lake hem de Iceberg, Parquet veri dosyalarından ve bir meta veri katmanından oluşur. Iceberg okumalarının etkinleştirilmesi, Iceberg istemcilerinin Azure Databricks tarafından yazılan Delta tables okuyabilmesi için generate verileri yeniden yazmadan zaman uyumsuz olarak Iceberg meta verilerini otomatik olarak tables yapılandırabilir. Veri dosyalarının tek bir kopyası birden çok biçime hizmet eder.

Önemli

  • Iceberg okuma özelliğinin etkin olduğu Tables temel Parquet veri dosyaları için sıkıştırma codec'i olarak Snappy yerine Zstandard kullanın.
  • Buzdağı meta verisi oluşturma, Delta tablesüzerinde veri yazmak için kullanılan hesaplamada eş zamansız olarak gerçekleştirilir ve bu da sürücü kaynak kullanımını artırma olasılığı vardır.
  • Eski UniForm IcebergCompatV1table özelliğinin belgeleri için, bkz. Eski UniForm IcebergCompatV1.

Gereksinimler

Iceberg okumalarını etkinleştirmek için aşağıdaki gereksinimlerin karşılanması gerekir:

  • Delta table Unity Catalog'ne kayıtlı olmalıdır. Hem yönetilen hem de harici tables desteklenir.
  • table için column eşlemesi etkin olmalıdır. Bkz. columnsile Delta Lake column eşlemesi.
  • Delta tableminReaderVersion>= 2 ve minWriterVersion>= 7 olmalıdır. Bkz. Azure Databricks Delta Lake özellik uyumluluğunu nasıl yönetir?.
  • table üzerine yazma işlemleri için Databricks Runtime 14.3 LTS veya üzeri kullanılmalıdır.

Not

Iceberg okumaları etkin olduğunda bir table üzerinde silme vektörlerini etkinleştiremezsiniz.

Silme vektörlerinin etkin olduğu mevcut bir REORG üzerinde Iceberg okumalarını etkinleştirirken silme vektörlerini devre dışı bırakmak ve temizlemek için table kullanın. Bkz. REORGkullanarak Iceberg okuma desteğini etkinleştirme veya yükseltme .

Buzdağı okumalarını etkinleştir (UniForm)

Önemli

Iceberg okumalarını etkinleştirdiğinizde, yazma protokolü özelliği IcebergCompatV2, table'e eklenir. Iceberg okumaları etkin durumdayken yalnızca bu table özelliğini destekleyen istemciler tables'e yazabilir. Azure Databricks'te, etkinleştirilmiş tables'ya yazmak için Databricks Runtime 14.3 LTS veya üzerini kullanmanız gerekir.

delta.universalFormat.enabledFormats table özelliğini sıfırlayarak Iceberg okumalarını kapatabilirsiniz. Delta Lake okuyucu ve yazıcı protokolü sürümlerine yükseltmeler geri alınamaz.

Iceberg okumalarını etkinleştirmek için aşağıdaki set özelliklerini table gerekir:

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

Iceberg okumalarını ilk etkinleştirdiğinizde zaman uyumsuz meta veri oluşturma başlar. Dış istemcilerin Iceberg kullanarak table sorgulayabilmesi için bu görevin tamamlanması gerekir. Bkz . Iceberg meta veri oluşturma durumunu denetleme.

Sınırlamaların list için bkz. Sınırlamalar.

Iceberg okumalarını, table oluşturma sırasında etkinleştir

Column eşleme Iceberg okumalarını kullanmak için etkinleştirilmelidir. Bu, aşağıdaki örnekte olduğu gibi table oluşturma sırasında Iceberg okumalarını etkinleştirirseniz otomatik olarak gerçekleşir:

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

Mevcut bir table üzerinde Iceberg okumalarını etkinleştirme

Databricks Runtime 15.4 LTS ve üzerindeki mevcut bir table'da Iceberg üzerindeki okuma işlemlerini etkinleştirebilir veya güncelleyebilirsiniz, bunu yapmak için aşağıdaki söz dizimini kullanabilirsiniz:

ALTER TABLE table_name SET TBLPROPERTIES(
  'delta.columnMapping.mode' = 'name',
  'delta.enableIcebergCompatV2' = 'true',
  'delta.universalFormat.enabledFormats' = 'iceberg');

REORG kullanarak Iceberg okuma desteğini etkinleştirme veya yükseltme

Aşağıdaki örnekte olduğu gibi Iceberg'in temel alınan veri dosyalarını okumasını ve yeniden yazmasını sağlamak için REORG kullanabilirsiniz:

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

Aşağıdakilerden biri doğruysa REORG kullanın:

  • table silme vektörleri etkin.
  • Daha önce UniForm Iceberg sürümünü etkinleştirmiştiniz IcebergCompatV1 .
  • Athena veya Redshift gibi Hive stili Parquet dosyalarını desteklemeyen Iceberg altyapılarından okumanız gerekir.

Iceberg meta veri oluşturma işlemi ne zaman gerçekleşir?

Azure Databricks, Delta Lake yazma işlemi tamamlandıktan sonra meta veri oluşturmayı zaman uyumsuz olarak tetikler. Bu meta veri oluşturma işlemi, Delta işlemini tamamlayan işlemi kullanır.

Not

Iceberg meta veri oluşturmayı el ile de tetikleyebilirsiniz. Bkz. Iceberg meta veri dönüştürmeyi el ile tetikleme.

Meta veri oluşturma ile ilişkili yazma gecikme sürelerini önlemek için, sık işlemeleri olan Delta tables birden çok Delta işlemesini Iceberg meta verilerine yönelik tek bir işlemede gruplandırabilir.

Delta Lake, belirli bir işlem kaynağında yalnızca bir meta veri oluşturma işleminin devam etmesini sağlar. İkinci bir eşzamanlı meta veri oluşturma işlemini tetikleyen işlemeler Delta'ya başarıyla işlenir 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ı).

Delta ve Iceberg table sürümlerine bakın.

Delta ve Iceberg table sürümleri

Delta Lake ve Iceberg, table meta verilerinde depolanan table sürümleri veya zaman damgalarını kullanarak zaman yolculuğu sorguları yapmaya olanak tanır.

Genel olarak Delta table sürümleri, yürütme zaman damgası veya sürüm kimliğine göre Iceberg sürümleriyle uyumlu değildir. Delta'nın table belirli bir Iceberg table sürümüne karşılık gelen sürümünü doğrulamak için ilgili table özelliklerini kullanabilirsiniz. Bkz . Iceberg meta veri oluşturma durumunu denetleme.

Iceberg meta veri oluşturma durumunu denetleme

Iceberg okunmasını bir table üzerinde etkinleştirmek, meta veri oluşturma durumunu izlemek için Unity Catalog ve Iceberg table meta verilerine şu alanları ekler:

Meta veri alanı Açıklama
converted_delta_version Iceberg meta verilerinin başarıyla oluşturulduğu Delta table 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 Delta Uniform Icebergdöndürülen bölüm gözden geçirildiDESCRIBE EXTENDED table_name.
  • table Gezgini ile Catalog meta verilerini gözden geçirme.
  • için REST API'sini kullanma.

Azure Databricks dışındaki table ö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 table'nin 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 kullanılabilen table içerikleri, dönüştürme işlemi başlatıldığında kullanılabilen Delta table 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 oluşturmayı desteklemeyen bir istemci, Delta table'ye yazar.

Iceberg meta veri oluşturmayı 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 Iceberg'i okuma

Bazı Iceberg istemcileri, harici Iceberg tableskaydetmek için sürümlenmiş meta veri dosyalarının bir yolunu belirtmenizi gerektirir. Azure Databricks Delta table'nin 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 table 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 Delta Uniform Icebergdöndürülen bölüm gözden geçirildiDESCRIBE EXTENDED table_name.
  • table Gezgini ile Catalog 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 table sürümlerini okumak için meta veri JSON yollarının el ile güncelleştirilmesini ve yenilenmesini gerektirebilir. Parquet veri dosyaları tablesile Delta table kaldırıldığından, kullanıcılar güncel olmayan sürümleri kullanarak Iceberg VACUUM sorgularken hatalarla karşılaşabilir.

Sınırlamalar

Iceberg okumalarının etkinleştirildiği tüm tables için aşağıdaki sınırlamalar vardır:

  • Buzdağı okumaları silme vektörleri etkinleştirilmiş tables üzerinde çalışmaz. Bkz . Silme vektörleri nedir?.
  • Iceberg okumaları etkinleştirilmiş Delta tables, VOID türlerini desteklemez.
  • Iceberg istemci desteği salt okunur olarak sunulmaktadır. Yazma işlemleri desteklenmez.
  • Iceberg okuyucu istemcilerinde, Iceberg okumaları için Azure Databricks desteğinden bağımsız olarak bireysel sınırlamalar olabilir. Seçtiğiniz istemcinin belgelerine bakın.
  • Delta Paylaşımı'nın recipients'ı, Iceberg okumaları etkinleştirilmiş olsa bile table'i yalnızca Delta olarak okuyabilir.
  • Bazı Delta Sharing okuyucu uygulamaları, Iceberg okumalarında kullanılan bazı Delta Lake table özelliklerini desteklemiyor. Bkz . Delta Sharing nedir?.

Delta istemcileri için Değişiklik Veri Akışı, Iceberg okumaları etkinleştirildiğinde çalışır ancak Iceberg'de desteklenmez.