Azure Databricks Apache Iceberg nedir?

Important

Unity Kataloğu tarafından yönetilen Iceberg tabloları, Databricks Runtime 16.4 LTS ve üzeri sürümlerin Genel Önizleme sürümünde kullanılabilir. Yabancı Buzdağı tabloları da Databricks Runtime 16.4 LTS ve üzerinde Genel Önizleme aşamasındadır.

Iceberg v3 özellikleri Databricks Runtime 18.0 ve sonraki sürümlerin Genel Önizleme sürümünde kullanılabilir. Bkz. Apache Iceberg v3 özelliklerini kullanma.

Apache Iceberg , analiz iş yükleri için açık kaynak bir tablo biçimidir. Şema evrimi, zaman yolculuğu ve gizli bölümleme gibi özellikleri destekler. Delta Lake gibi Iceberg de nesne depolamada depolanan veriler üzerinde ACID işlemlerini etkinleştiren bir soyutlama katmanı sağlar. Azure Databricks, Apache Parquet dosya biçimini kullanan Iceberg tablolarını destekler. Iceberg, her tablo değişikliği için yeni meta veri dosyaları yazarak bölünmezliği ve tutarlılığı korur.

Iceberg kataloğu, Iceberg tablo mimarisinin en üst düzey katmanıdır. Tabloları oluşturma, bırakma ve yeniden adlandırma gibi işlemleri işler. Asıl sorumluluğu, bir tablo yüklendiğinde geçerli meta verileri sağlamaktır. Azure Databricks tarafından yönetilen Iceberg tabloları desteklemektedir:

Azure Databricks içindeki tüm Iceberg tabloları açık Iceberg tablo biçimi belirtimini izler. Bkz. Iceberg tablosu belirtimi.

Unity Kataloğu'nda Buzdağı tabloları oluşturma

Unity Kataloğu'nda oluşturulan buzdağı tabloları yönetilen Iceberg tablolarıdır. Şu tabloları kullanarak oluşturabilirsiniz:

  • Databricks Runtime veya Databricks SQL
  • Apache Spark, Flink, Trino veya Kafka gibi Iceberg REST Katalog API'sini destekleyen dış Iceberg uyumlu altyapılar. Bkz. Apache Iceberg istemcilerinden Access Azure Databricks tabloları.

Yönetilen Iceberg tabloları, Azure Databricks platform özellikleriyle tamamen tümleşiktir. Unity Kataloğu, bu tablolarda anlık görüntü süre sonu ve dosya sıkıştırma gibi yaşam döngüsü görevlerini yönetir. Yönetilen Iceberg tabloları, sorgu performansını geliştiren sıvı kümelemeyi de destekler. Tahmine dayalı iyileştirme , depolama maliyetlerini azaltmak ve sorgu hızını artırmak için bu görevleri otomatikleştirir. Databricks, Unity Kataloğu'nu okumak ve yazmak için Iceberg istemcilerinin 1.9.2 ve üzerini kullanmanızı önerir.

Diğer kataloglar tarafından yönetilen Iceberg tablolarını okuma

Yabancı Iceberg tablosu, Unity Kataloğu dışındaki bir katalog tarafından yönetilen bir Iceberg tablosudur. Dış katalog tablonun geçerli meta verilerini depolar. Azure Databricks meta verileri almak ve tabloyu nesne depolamadan okumak için Lakehouse Federation kullanır.

Yabancı Buzdağı tabloları Azure Databricks salt okunur ve sınırlı platform desteğine sahiptir.

Dış sistemleri kullanarak Iceberg tablolarına erişme

Unity Kataloğu'ndaki tüm Iceberg tablolarına Iceberg REST Kataloğu API'sini kullanarak erişebilirsiniz. Bu açık API, farklı diller ve platformlarda dış Iceberg altyapılarından okuma ve yazma işlemlerini destekler. Bkz. Apache Iceberg istemcilerinden Access Azure Databricks tabloları.

REST Kataloğu, temel depolamaya erişim sağlamak için dış motorlara geçici kimlik bilgileri sunan kimlik bilgisi sağlama hizmetini destekler. Daha fazla bilgi için bkz. Dış sistem erişimi için Unity Kataloğu kimlik bilgileri sağlanması.

Uyarı

Kimlik bilgisi otomatları, varsayılan depolamayı kullanan çalışma alanlarında desteklenmez. Bkz. Sınırlamalar.

Bölüm evrimi

Bölüm evrimi ile, verileri yeniden yazmadan mevcut bir Apache Iceberg tablosunun bölümleme düzenini değiştirebilirsiniz. Yeni veriler güncelleştirilmiş bölüm düzeniyle yazılır ve mevcut veriler özgün bölüm düzenini korur. Apache Iceberg bölüm belirtimlerini izler ve sorgu zamanında doğru filtreyi uygular. Bkz. Apache Iceberg için bölüm evrimi.

Uyarı

Bölüm evrimi, Databricks SQL aracılığıyla değil, Iceberg REST Kataloğu kullanılarak dış Iceberg altyapıları aracılığıyla yönetilen Iceberg tablolarında desteklenir. gibi years()bucket() ifade tabanlı bölüm dönüşümleri yönetilen Iceberg tablolarında desteklenmez. Bkz. Iceberg tablo sınırlamaları.

Dış erişimi yapılandırmak için bkz. Apache Iceberg istemcilerinden Access Azure Databricks tabloları.

Aşağıdaki örneklerde Spark SQL ve Iceberg uzantısı ile bölüm evriminin nasıl kullanılacağı gösterilmektedir. Apache Iceberg bölüm evrimi söz dizimi ve desteklenen dönüşümler için bkz. Apache Iceberg Spark DDL.

Bölüm alanı ekle

Var olan bir tabloya yeni bölüm alanı eklemek için:

ALTER TABLE catalog.schema.table ADD PARTITION FIELD column_name;

Bir bölüm alanını sil

Tablodan var olan bir bölüm alanını kaldırmak için:

ALTER TABLE catalog.schema.table DROP PARTITION FIELD column_name;

Bölüm alanını değiştirme

Ara yeniden bölümleme olmadan bir bölüm alanını başka bir bölüm alanıyla değiştirmek için:

ALTER TABLE catalog.schema.table REPLACE PARTITION FIELD old_column WITH new_column;

Buzdağı tablo sınırlamaları

Azure Databricks'daki Iceberg tabloları için aşağıdaki sınırlamalar geçerlidir ve değiştirilebilir:

  • Iceberg tabloları yalnızca Apache Parquet dosya biçimini destekler.
  • Azure Databricks Iceberg belirtiminin 1, 2 ve 3 sürümlerini destekler.
  • Iceberg v2 konum silmeleri ve eşitlik tabanlı silmeler desteklenmez. Bunun yerine Azure Databricks, satır düzeyi silme işlemleri için Iceberg v3 silme vektörlerini destekler.
  • Dallanma ve etiketleme desteklenmez. Yabancı Iceberg tablolarını okurken yalnızca ana dala erişilebilir.
  • Bölümleme:
    • Yalnızca dış Iceberg motorlarından etkileşim kurulduğunda, yönetilen Iceberg tablolarında bölüm evrimi desteklenir.
    • Yabancı Iceberg tabloları bölümlendirme evrimini desteklemez.
    • Türe göre BINARY bölümleme desteklenmez.
  • Görünümler desteklenmez.
  • Aşağıdaki veri türleri desteklenmez:
    • UUID
    • Fixed(L)
    • TIME
    • Gerekli alanlar ile iç içe geçmiş STRUCT

Yönetilen Iceberg tablolarının sınırlamaları

Aşağıdaki sınırlamalar özellikle yönetilen Iceberg tabloları için geçerlidir:

  • Vektör araması desteklenmez.
  • Iceberg değişiklik veri yayını desteklemez. Sonuç olarak, yönetilen Iceberg tabloları aşağıdakiler için kaynak olarak okunurken artımlı işleme desteklenmez:
    • Gerçekleştirilmiş görünümler ve akış tabloları
    • Veri profili oluşturma
    • Çevrimiçi tablolar
    • Lakebase
    • Veri sınıflandırma
  • Yönetilen Iceberg tabloları yalnızca tablo bakımı için tahmine dayalı iyileştirme etkinleştirildiğinde oluşturulabilir.
  • Aşağıdaki tablo özellikleri Unity Kataloğu tarafından yönetilir ve el ile ayarlanamaz:
    • write.location-provider.impl
    • write.data.path
    • write.metadata.path
    • write.format.default
    • write.delete.format.default
  • Tablo sıkıştırmasını değiştirmek için sıkıştırma codec'i desteklenmez. Tüm tablolar varsayılan olarak Zstd kullanır.
  • İfadelere göre bölümleme (örneğin, years(), months()days(), , hours()), bucket()desteklenmez.
  • Apache Iceberg'de desteklenmeyen özellikler yönetilen Iceberg tablolarında da kullanılamaz. Buna Delta Lake tarafından oluşturulan kolonlar, Azure Databricks üzerindeki kısıtlamalar ve Delta Lake için sıralama desteği dahildir.

Yurtdışı Buzdağı tablo sınırlamaları

Aşağıdaki sınırlamalar özellikle yabancı Iceberg tabloları için geçerlidir:

  • Zaman yolculuğu yalnızca daha önce Azure Databricks'te okunan Iceberg anlık görüntüleri (yani SELECT deyiminin yürütüldüğü anlık görüntüler) için desteklenir.
  • Iceberg bölümleme için demet dönüştürme işlevlerinin kullanılması, koşullu filtreler kullanıldığında sorgu performansını düşürebilir.
  • Bulut depolama katmanlama ürünleri, Amazon S3 gibi, yabancı Iceberg tablolarıyla entegre edilmemiştir. Azure Databricks'de yabancı Iceberg tablolarına erişmek, daha düşük maliyetli depolama katmanlarında arşivlenen verileri geri yükleyebilir.
  • Özel erişim modu kümelerinde, Iceberg tablolarındaki okumalar ve REFRESH FOREIGN TABLE işlemleri ALL PRIVILEGES gerektirir.