Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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 Delta Lake, Iceberg tworzy warstwę abstrakcji, która umożliwia obsługę transakcji ACID na danych przechowywanych w pamięci obiektowej.
Azure Databricks obsługuje tabele Iceberg, które korzystają z formatu plików Apache Parquet oraz wersji 1, 2 i 3 specyfikacji Iceberg. Iceberg utrzymuje atomowość i spójność, zapisując nowe pliki metadanych dla każdej zmiany tabeli. Wszystkie tabele Iceberg w Azure Databricks są zgodne ze specyfikacją otwartego formatu tabeli Iceberg. Zobacz specyfikację tabeli Iceberg.
Katalog Iceberg to najwyższa warstwa architektury tabel Iceberg, która zwraca bieżące metadane podczas ładowania tabeli. Katalog Iceberg obsługuje operacje takie jak tworzenie, usuwanie i zmienianie nazw tabel.
Azure Databricks obsługuje tabele Iceberg zarządzane przez:
- Katalog Unity
- Katalogi zagraniczne, takie jak AWS Glue, Metastore Hive lub Katalog Snowflake Horizon
Wymagania
Musisz spełnić następujące wymagania:
- Obszar roboczy z włączonym Unity Catalog.
- Użyj środowiska Databricks Runtime 16.4 LTS lub nowszego dla zarządzanych i zewnętrznych tabel Iceberg.
Tworzenie tabel Iceberg w Unity Catalog
Tabele góry lodowej tworzone w wykazie aparatu Unity są zarządzanymi tabelami góry lodowej. Te tabele można utworzyć przy użyciu następujących metod:
- Databricks Runtime lub Databricks SQL
- Zewnętrzne silniki zgodne z Iceberg, które obsługują interfejs API katalogu REST Iceberg, takie jak Apache Spark, Flink, Trino lub Kafka. Zobacz jak uzyskać dostęp do tabel Azure Databricks z klientów Apache Iceberg.
Zarządzane tabele Iceberg są w pełni zintegrowane z funkcjami platformy 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 operacje w celu zmniejszenia kosztów magazynowania i zwiększenia szybkości zapytań.
- Zarządzane tabele Iceberg obsługują również widoki zmaterializowane i tabele strumieniowe.
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.
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
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.
- W przypadku Iceberg v2 usuwanie według pozycji i usuwanie 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
BINARYtypu nie jest obsługiwane.
- Widoki nie są dostępne przez zewnętrzne silniki Iceberg.
- Następujące typy danych nie są obsługiwane:
UUIDFixed(L)TIME- Zagnieżdżone
STRUCTz wymaganymi polami
- Informacje o ograniczeniach dotyczących Iceberg v3 można znaleźć w sekcji Ograniczenia.
Ograniczenia zarządzanej tabeli Iceberg
Następujące ograniczenia mają zastosowanie wyłącznie do zarządzanych tabel Iceberg.
- Wyszukiwanie wektorowe nie jest obsługiwane. Zobacz Wyszukiwanie wektorowe.
- Jeśli używasz zarządzanych tabel Iceberg jako źródła zsynchronizowanych tabel dla Lakebase, przetwarzanie przyrostowe z automatycznym strumieniem danych o zmianach nie jest obsługiwane.
- 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.implwrite.data.pathwrite.metadata.pathwrite.format.defaultwrite.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 TABLEoperacji w tabelach Iceberg wymagająALL PRIVILEGES.