Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Important
Unity Catalog-hanterade Iceberg-tabeller är tillgängliga i offentlig förhandsversion i Databricks Runtime 16.4 LTS och senare. Utländska isbergstabeller finns också i offentlig förhandsversion i Databricks Runtime 16.4 LTS och senare.
Iceberg v3-funktioner är tillgängliga i offentlig förhandsversion i Databricks Runtime 18.0 och senare. Se Använda Apache Iceberg v3-funktioner.
Apache Iceberg är ett tabellformat med öppen källkod för analysarbetsbelastningar. Den stöder funktioner som schemautveckling, tidsresor och dold partitionering. Precis som Delta Lake tillhandahåller Iceberg ett abstraktionslager som möjliggör ACID-transaktioner på data som lagras i objektlagring. Azure Databricks stöder Iceberg-tabeller som använder Apache Parquet-filformatet. Iceberg upprätthåller atomitet och konsekvens genom att skriva nya metadatafiler för varje tabelländring.
En Isbergskatalog är det översta lagret i isbergstabellarkitekturen. Den hanterar åtgärder som att skapa, släppa och byta namn på tabeller. Dess huvudansvar är att tillhandahålla aktuella metadata när en tabell läses in. Azure Databricks stöder Iceberg-tabeller som hanteras av:
- Unity-katalog
- Utländska kataloger, till exempel AWS Glue, Hive-metaarkiv eller Snowflake Horizon Catalog
Alla isbergstabeller i Azure Databricks följer specifikationen för det öppna isbergstabellformatet. Se specifikationen för Iceberg-tabellen.
Skapa isbergstabeller i Unity Catalog
Isbergstabeller som skapats i Unity Catalog är hanterade isbergstabeller. Du kan skapa dessa tabeller med hjälp av:
- Databricks Runtime eller Databricks SQL
- Externa isbergskompatibla motorer som stöder API:et för Isbergs REST-katalog, till exempel Apache Spark, Flink, Trino eller Kafka. Se Access Azure Databricks-tabeller från Apache Iceberg-klienter.
Hanterade Isberg-tabeller är fullt integrerade med plattformsfunktionerna i Azure Databricks. Unity Catalog hanterar livscykeluppgifter som förfallotid för ögonblicksbilder och filkomprimering på dessa tabeller. Hanterade isbergstabeller stöder också flytande klustring, vilket förbättrar frågeprestanda. Förutsägelseoptimering automatiserar dessa uppgifter för att minska lagringskostnaderna och förbättra frågehastigheten. Databricks rekommenderar att du använder Iceberg-klienterna 1.9.2 och senare för att läsa och skriva till Unity Catalog.
Läsa isbergstabeller som hanteras av andra kataloger
En isbergstabell från en främmande källa är en isbergstabell som hanteras av en katalog utanför Unity Catalog. Den externa katalogen lagrar tabellens aktuella metadata. Azure Databricks använder Lakehouse Federation för att hämta metadata och läsa tabellen från objektlagring.
Utländska isbergstabeller är skrivskyddade i Azure Databricks och har begränsat plattformsstöd.
Få åtkomst till Iceberg-tabeller med hjälp av externa system
Du kan komma åt alla Iceberg-tabeller i Unity Catalog med hjälp av API:et iceberg REST Catalog. Det här öppna API:et stöder läs- och skrivåtgärder från externa isbergsmotorer på olika språk och plattformar. Se Access Azure Databricks-tabeller från Apache Iceberg-klienter.
REST-katalogen stöder autentiseringsdistribution, vilken levererar tillfälliga autentiseringsuppgifter till externa system för åtkomst till den underliggande lagringen. Mer information finns i Unity Catalog-autentiseringsuppgifter för extern systemåtkomst.
Varning
Utdelning av autentiseringsuppgifter stöds inte på arbetsytor som använder standardlagring. Se Begränsningar.
Partitionsutveckling
Med partitionsutveckling kan du ändra partitioneringsschemat för en befintlig Apache Iceberg-tabell utan att skriva om data. Nya data skrivs med den uppdaterade partitionslayouten och befintliga data behåller sin ursprungliga partitionslayout. Apache Iceberg spårar partitionsspecifikationerna och tillämpar rätt filter vid frågetillfället. Se partitionsutveckling för Apache Iceberg.
Anmärkning
Partitionsutveckling stöds på hanterade isbergstabeller via externa isbergsmotorer med hjälp av Iceberg REST Catalog, men inte via Databricks SQL. Uttrycksbaserade partitionstransformer som years() och bucket() stöds inte för hanterade Isbergstabeller. Se Begränsningar för isbergstabeller.
Information om hur du konfigurerar extern åtkomst finns i Access Azure Databricks-tabeller från Apache Iceberg-klienter.
Följande exempel visar hur du använder partitionsutveckling med Spark SQL och Iceberg-tillägget. Apache Iceberg-partitionsutvecklingssyntax och transformeringar som stöds finns i Apache Iceberg Spark DDL.
Lägga till ett partitionsfält
Så här lägger du till ett nytt partitionsfält i en befintlig tabell:
ALTER TABLE catalog.schema.table ADD PARTITION FIELD column_name;
Ta bort ett partitionsfält
Så här tar du bort ett befintligt partitionsfält från en tabell:
ALTER TABLE catalog.schema.table DROP PARTITION FIELD column_name;
Ersätt ett partitionsfält
Så här växlar du ett partitionsfält mot ett annat utan mellanliggande ompartition:
ALTER TABLE catalog.schema.table REPLACE PARTITION FIELD old_column WITH new_column;
Begränsningar för isbergstabeller
Följande begränsningar gäller för Isbergstabeller i Azure Databricks och kan komma att ändras:
- Isbergstabeller stöder bara filformatet Apache Parquet.
- Azure Databricks stöder version 1, 2 och 3 av Iceberg-specifikationen.
- För v3-specifika begränsningar, se Begränsningar.
- Iceberg v2-positioners borttagningar och likhetsbaserade borttagningar stöds inte. I stället stöder Azure Databricks Iceberg v3-borttagningsvektorer för borttagningar på radnivå.
- Förgrening och taggning stöds inte. Endast huvudgrenen är tillgänglig när man arbetar med utländska Iceberg-tabeller.
- Partitionering:
- Partitionsutveckling stöds endast på de hanterade Iceberg-tabellerna vid interaktion från externa Iceberg-motorer.
- Utländska isbergstabeller stöder inte partitionsutveckling.
- Partitionering efter
BINARYtyp stöds inte.
- Vyer stöds inte.
- Följande datatyper stöds inte:
UUIDFixed(L)TIME- Kapslad
STRUCTmed obligatoriska fält
Begränsningar för hanterade isbergstabeller
Följande begränsningar gäller specifikt för hanterade isbergstabeller:
- Vektorsökning stöds inte.
- Iceberg stöder inte ändringsdataflöde. Därför stöds inte inkrementell bearbetning vid läsning av hanterade isbergstabeller som källa för:
- Materialiserade vyer och strömmande tabeller
- Dataprofilering
- Onlinetabeller
- Lakebase
- Dataklassificering
- Hanterade isbergstabeller kan bara skapas om förutsägande optimering är aktiverat för tabellunderhåll.
- Följande tabellegenskaper hanteras av Unity Catalog och kan inte anges manuellt:
write.location-provider.implwrite.data.pathwrite.metadata.pathwrite.format.defaultwrite.delete.format.default
- Komprimeringskodcen för att ändra tabellkomprimering stöds inte. Alla tabeller använder Zstd som standard.
- Partitionering efter uttryck (till exempel
years(),months(),days(),hours(), )bucket()stöds inte. - Funktioner som inte stöds i Apache Iceberg är inte heller tillgängliga för hanterade isbergstabeller. Detta inkluderar Delta Lake-genererade kolumner, Constraints på Azure Databricks och Collation-stöd för Delta Lake.
Begränsningar för utländska isbergstabeller
Följande begränsningar gäller specifikt för utländska isbergstabeller:
- Tidsresor stöds endast för Iceberg-snapshots som tidigare har lästs i Azure Databricks (dvs. snapshots där en
SELECT-instruktion kördes). - Om du använder bucket-transformeringsfunktioner för Iceberg-partitionering kan prestandan för frågor försämras när konditionella filter används.
- Produkter för lagringslösningar i molnet, såsom Amazon S3, är inte integrerade med utomstående Iceberg-tabeller. Åtkomst till utländska Iceberg-tabeller i Azure Databricks kan återställa data som arkiverats på lagringsnivåer med lägre kostnad.
- I dedikerade åtkomstlägeskluster kräver läsningar och
REFRESH FOREIGN TABLE-åtgärder på Iceberg-tabellerALL PRIVILEGES.