Udostępnij za pośrednictwem


Co to jest Apache Iceberg w Azure Databricks?

Important

Tabele Iceberg zarządzane przez Unity Catalog są dostępne w publicznej wersji zapoznawczej w wersji Databricks Runtime 16.4 LTS lub nowszej. Tabele Iceberg są również dostępne w publicznej wersji zapoznawczej w Databricks Runtime 16.4 LTS i nowsze.

Funkcje Iceberg w wersji 3 są dostępne w publicznej wersji zapoznawczej w środowisku Databricks Runtime 18.0 lub nowszym. Zobacz Korzystanie z funkcji Apache Iceberg v3.

Apache Iceberg to format tabeli typu open source dla obciążeń analitycznych. Obsługuje funkcje, takie jak ewolucja schematu, podróż w czasie i ukryte partycjonowanie. Podobnie jak usługa Delta Lake, Iceberg udostępnia warstwę abstrakcji, która umożliwia transakcje ACID na danych przechowywanych w magazynie obiektów. Azure Databricks obsługuje tabele Iceberg korzystające z formatu plików Apache Parquet. Iceberg utrzymuje atomowość i spójność, zapisując nowe pliki metadanych dla każdej zmiany tabeli.

Katalog Iceberg to warstwa najwyższego poziomu architektury tabeli Iceberg. Obsługuje operacje, takie jak tworzenie, upuszczanie i zmienianie nazw tabel. Główną obowiązkiem jest dostarczenie bieżących metadanych podczas ładowania tabeli. Azure Databricks obsługuje tabele Iceberg zarządzane przez:

Wszystkie tabele Iceberg w Azure Databricks są zgodne ze specyfikacją otwartego formatu tabeli Iceberg. Zobacz specyfikację tabeli Iceberg.

Tworzenie tabel Iceberg w Unity Catalog

Tabele Iceberg utworzone w Unity Catalog są zarządzanymi tabelami Iceberg. Te tabele można utworzyć przy użyciu następujących metod:

Zarządzane tabele Iceberg są w pełni zintegrowane z funkcjami platformowymi Azure Databricks. Unity Catalog zarządza zadaniami związanymi z cyklem życia, takimi jak wygaśnięcie migawki i kompresja plików w tych tabelach. Zarządzane tabele Iceberg obsługują również dynamiczne klastrowanie, co zwiększa wydajność zapytań. Optymalizacja predykcyjna automatyzuje te zadania, aby zmniejszyć koszty magazynowania i zwiększyć szybkość zapytań. Usługa Databricks zaleca używanie klientów Iceberg w wersji 1.9.2 lub nowszej do odczytu i zapisu do Unity Catalog.

Odczytywanie tabel Iceberg zarządzanych przez inne katalogi

Zewnętrzna tabela Iceberg to tabela Iceberg zarządzana przez katalog poza Unity Catalog. Wykaz zewnętrzny przechowuje bieżące metadane tabeli. Azure Databricks używa Lakehouse Federation aby pobrać metadane i odczytać tabelę z magazynu obiektów.

Tabele Iceberg są tylko do odczytu w Azure Databricks i mają ograniczone wsparcie platformy.

Dostęp do tabel Iceberg za pomocą systemów zewnętrznych

Możesz uzyskać dostęp do wszystkich tabel Iceberg w Unity Catalog za pomocą Iceberg REST Catalog API. Ten otwarty interfejs API obsługuje operacje odczytu i zapisu z zewnętrznych silników Iceberg w różnych językach i na różnych platformach. Zobacz jak uzyskać dostęp do tabel Azure Databricks z klientów Apache Iceberg.

Katalog REST obsługuje udostępnianie poświadczeń, które dostarcza tymczasowe poświadczenia do zewnętrznych silników w celu uzyskania dostępu do bazowego magazynu. Aby uzyskać więcej informacji, zobacz Udostępnianie poświadczeń katalogu Unity dla dostępu do systemu zewnętrznego.

Ostrzeżenie

Sprzedaż poświadczeń nie jest obsługiwana w obszarach roboczych korzystających z magazynu domyślnego. Zobacz Ograniczenia.

Ewolucja partycji

Dzięki ewolucji partycji można zmienić schemat partycjonowania istniejącej tabeli Apache Iceberg bez ponownego zapisywania danych. Nowe dane są zapisywane przy użyciu zaktualizowanego układu partycji, a istniejące dane zachowują oryginalny układ partycji. Apache Iceberg śledzi specyfikacje partycji i stosuje prawidłowy filtr w czasie zapytania. Zobacz Ewolucja partycji dla platformy Apache Iceberg.

Uwaga / Notatka

Ewolucja partycji jest obsługiwana w zarządzanych tabelach Iceberg za pośrednictwem zewnętrznych silników Iceberg przy użyciu Iceberg REST Catalog, ale nie za pośrednictwem Databricks SQL. Przekształcenia partycji oparte na wyrażeniach, takie jak years() i bucket(), nie są obsługiwane dla zarządzanych tabel Iceberg. Zobacz Ograniczenia tabeli Iceberg.

Aby skonfigurować dostęp zewnętrzny, zobacz jak łączyć się do tabel Azure Databricks przy użyciu klientów Apache Iceberg.

W poniższych przykładach pokazano, jak używać ewolucji partycji z usługą Spark SQL i rozszerzeniem Iceberg. Aby zapoznać się ze składnią ewolucji partycji Apache Iceberg i obsługiwanymi przekształceniami, zobacz Apache Iceberg Spark DDL.

Dodawanie pola partycji

Aby dodać nowe pole partycji do istniejącej tabeli:

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

Usuwanie pola partycji

Aby usunąć istniejące pole partycji z tabeli:

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

Zastąp pole partycji

Aby zamienić jedno pole partycji na inne bez ponownej partycji pośredniczącej:

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

Ograniczenia tabeli Iceberg

Następujące ograniczenia dotyczą tabel góry lodowej w Azure Databricks i mogą ulec zmianie:

  • Tabele Iceberg obsługują tylko format pliku Apache Parquet.
  • Azure Databricks obsługuje wersje 1, 2 i 3 specyfikacji Iceberg.
    • Aby zapoznać się z ograniczeniami specyficznymi dla wersji 3, zobacz Ograniczenia.
  • Usuwanie pozycji w Iceberg v2 i usunięcia oparte na równości nie są obsługiwane. Zamiast tego Azure Databricks obsługuje wektory usuwania Iceberg w wersji 3 na potrzeby usuwania na poziomie wiersza.
  • Rozgałęzianie i tagowanie nie są obsługiwane. Tylko gałąź główna jest dostępna podczas odczytywania zagranicznych tabel Iceberg.
  • Partycjonowanie:
    • Ewolucja partycji jest obsługiwana w zarządzanych tabelach Iceberg tylko podczas interakcji z zewnętrznymi silnikami Iceberg.
    • Zagraniczne tabele Iceberg nie obsługują ewolucji partycji.
    • Partycjonowanie według BINARY typu nie jest obsługiwane.
  • Widoki nie są obsługiwane.
  • Następujące typy danych nie są obsługiwane:
    • UUID
    • Fixed(L)
    • TIME
    • Zagnieżdżone STRUCT z wymaganymi polami

Ograniczenia zarządzanej tabeli Iceberg

Następujące ograniczenia mają zastosowanie wyłącznie do zarządzanych tabel Iceberg.

  • Wyszukiwanie wektorowe nie jest obsługiwane.
  • Góra lodowa nie obsługuje kanału danych zmieniających się. W związku z tym przetwarzanie przyrostowe nie jest obsługiwane podczas odczytywania zarządzanych tabel Iceberg jako źródła:
    • Zmaterializowane widoki i tabele do strumieniowania danych
    • Profilowanie danych
    • Tabele online
    • Lakebase
    • Klasyfikacja danych
  • Zarządzane tabele Iceberg można tworzyć tylko wtedy, gdy optymalizacja predykcyjna jest włączona do konserwacji tabel.
  • Następujące właściwości tabeli są zarządzane przez Unity Catalog i nie można ich ustawić ręcznie.
    • write.location-provider.impl
    • write.data.path
    • write.metadata.path
    • write.format.default
    • write.delete.format.default
  • Kodek kompresji do zmiany kompresji tabeli nie jest obsługiwany. Domyślnie wszystkie tabele używają biblioteki Zstd.
  • Partycjonowanie według wyrażeń (na przykład years(), , months()days(), hours(), bucket()) nie jest obsługiwane.
  • Funkcje nieobsługiwane w Apache Iceberg również nie są dostępne dla zarządzanych tabel Iceberg. Obejmuje to kolumny wygenerowane w Delta Lake, ograniczenia na Azure Databricks oraz obsługę sortowania dla Delta Lake.

Ograniczenia zewnętrznej tabeli Iceberg

Następujące ograniczenia mają zastosowanie w szczególności do zewnętrznych tabel Iceberg:

  • Podróż w czasie jest obsługiwana tylko w przypadku migawek Iceberg, które zostały wcześniej odczytane na Azure Databricks (czyli migawek, dla których wykonano instrukcję SELECT).
  • Użycie funkcji transformacji bucket na potrzeby partycjonowania Iceberg może obniżyć wydajność zapytań, gdy są używane filtry warunkowe.
  • Produkty do hierarchizacji pamięci masowej w chmurze, takie jak Amazon S3, nie są zintegrowane z zagranicznymi tabelami Iceberg. Uzyskiwanie dostępu do obcych tabel Iceberg w Azure Databricks może przywrócić dane zarchiwizowane w warstwach magazynowania niższych kosztów.
  • W klastrach trybu dedykowanego dostępu operacje odczytu i REFRESH FOREIGN TABLE operacji w tabelach Iceberg wymagają ALL PRIVILEGES.