Unity Catalog-hanterade tabeller i Azure Databricks för Delta Lake och Apache Iceberg

På den här sidan beskrivs hanterade Unity Catalog-tabeller i Delta Lake och Apache Iceberg, standardtabelltypen och den rekommenderade tabelltypen i Azure Databricks. Dessa tabeller styrs helt och optimeras av Unity Catalog, vilket ger prestanda, driftfördelar och lägre lagrings- och beräkningskostnader jämfört med externa och externa tabeller, eftersom hanterade tabeller lär sig av dina läs- och skrivmönster. Unity Catalog hanterar alla läs-, skriv-, lagrings- och optimeringsansvar för hanterade tabeller. Se Konvertera en extern Delta-tabell till en hanterad Unity Catalog-tabell.

Datafiler för hanterade tabeller lagras i schemat eller katalogen som innehåller dem. Se Ange en hanterad lagringsplats i Unity Catalog.

Databricks rekommenderar att du använder hanterade tabeller för att dra nytta av:

  • Minskade lagrings- och beräkningskostnader.
  • Snabbare frågeprestanda för alla klienttyper.
  • Automatiskt underhåll och optimering av tabeller.
  • Säker åtkomst för icke-Databricks-klienter via öppna API:er.
  • Stöd för Delta Lake- och Iceberg-format.
  • Automatiska uppgraderingar till de senaste plattformsfunktionerna.

Hanterade tabeller stöder samverkan genom att tillåta åtkomst från Delta Lake- och Iceberg-klienter. Genom öppna API:er och distribution av autentiseringsuppgifter möjliggör Unity Catalog för externa motorer som Trino, DuckDB, Apache Spark, Daft, samt katalogintegrerade REST-motorer som Iceberg och Dremio att komma åt hanterade tabeller. För externa klienter som inte stöder öppna API:er kan du använda Kompatibilitetsläge för att läsa hanterade tabeller med hjälp av alla Delta Lake- eller Iceberg-klienter. Deltadelning, ett protokoll med öppen källkod, möjliggör säker, styrd datadelning med externa partner och plattformar.

Du kan arbeta med hanterade tabeller på alla språk och produkter som stöds i Azure Databricks. Du behöver vissa behörigheter för att skapa, uppdatera, ta bort eller fråga hanterade tabeller. Se avsnitt Hantera privilegier i Unity Catalog.

Note

På den här sidan beskrivs endast hanterade unity-katalogtabeller. Hanterade tabeller i det äldre Hive-metaarkivet finns i Databasobjekt i det äldre Hive-metaarkivet.

Varför ska du använda hanterade Unity Catalog-tabeller?

Hanterade tabeller i Unity Catalog optimerar lagringskostnader och frågehastigheter och tillåter samverkan med verktyg från tredje part för Delta Lake och Apache Iceberg. För att förenkla datahantering och prestanda använder dessa hanterade tabeller AI-baserade tekniker, till exempel filstorlekskomprimering och intelligent statistikinsamling.

Följande funktioner är unika för hanterade Unity Catalog-tabeller och är inte tillgängliga för externa tabeller och sekundärtabeller:

Feature Benefits Aktiverat som standard? Konfigurerbara?
Katalogincheckningar Möjliggör transaktioner med flera instruktioner mellan tabeller, snabbare frågeplanering genom att hantera metadata direkt från Unity Catalog, framtvingbara schema- och begränsningsändringar samt säkra skrivningar från externa motorer. Nej. Ja.
Ange egenskapen för tabellen delta.feature.catalogManaged. Se Aktivera katalogincheckningar.
Förutsägande optimering Prediktiv optimering optimerar automatiskt din datalayout och dina beräkningsresurser med hjälp av AI, utan att manuella underhållsåtgärder krävs. Databricks rekommenderar att du aktiverar förutsägelseoptimering för alla hanterade tabeller för att minska lagrings- och beräkningskostnaderna.
Förutsägelseoptimering körs automatiskt:
Ja, för alla nya konton som skapats den 11 november 2024 eller senare.
För löpande konton möjliggör Azure Databricks gradvis förutsägande optimering som standard. Se Kontrollera om förutsägelseoptimering är aktiverat.
Ja. Se även Aktivera förutsägande optimering.
Transaktioner med flera satser Gör det möjligt att köra flera SQL-satser över en eller flera tabeller som en enda atomisk commit, med ACID-garantier. Alla ändringar lyckas tillsammans eller rullas ihop igen. Använd för lagrade procedurer och SQL-skript i verksamhetskritiska lagerarbetsbelastningar.
Transaktioner som skriver till hanterade Delta Lake-tabeller finns i offentlig förhandsversion.
Transaktioner som skriver till hanterade Apache Iceberg-tabeller finns i privat förhandsversion.
Nej. Ja. Används BEGIN ATOMIC ... END; för icke-interaktiva transaktioner eller BEGIN TRANSACTION; ... COMMIT; för interaktiva transaktioner. Se Transaktionslägen.
Automatisk flytande klustring För tabeller med prediktiv optimering tillåter automatisk flytande klustring Azure Databricks att välja klustringsnycklar på ett intelligent sätt. När frågemönstren ändras uppdaterar Azure Databricks automatiskt klustringsnycklar för att förbättra prestanda och lägre kostnader. Nej. Ja. Se Aktivera vätskeklustring.
Cachelagring för metadata Minnesintern cachelagring av transaktionsmetadata förbättrar frågeprestanda genom att minimera begäranden till transaktionsloggen som lagras i molnet. Ja. Nej. Cachelagring av metadata är alltid aktiverat för hanterade tabeller.
Sökindex i fulltext Fulltextsökningsindex snabbar upp sökningar efter delsträngar och nyckelord i textkolumner i hanterade tabeller. När ett index gäller hoppar Azure Databricks över filer som inte kan innehålla matchande rader, vilket minskar mängden data som genomsöks.
Fulltextsökningsindex gör sökningar efter delsträngar och ord snabbare med funktionerna search och isearch.
Fulltextsökningsindex finns i Beta och kräver Databricks Runtime 18.2 och senare.
Nej. Ja. Skapa med CREATE INDEX (sekundär) eller CREATE SEARCH INDEX (fulltext).
Automatisk borttagning av filer efter ett DROP TABLE kommando Om du DROP en hanterad tabell tar Azure Databricks bort data i molnlagring efter 8 dagar för att minska lagringskostnaderna. För externa tabeller måste du manuellt ta bort filerna från lagrings bucketen. Ja. Nej. För hanterade tabeller tas filer alltid bort automatiskt efter 8 dagar.

Få åtkomst till Databricks-data med hjälp av externa system

Hanterade tabeller stöder samverkan genom att tillåta åtkomst från Delta Lake- och Iceberg-klienter. Genom öppna API:er och autentiseringsuppgifter gör Unity Catalog det möjligt för externa motorer som Trino, DuckDB, Apache Spark, Daft och Iceberg REST katalogintegrerade motorer som Dremio och Snowflake att komma åt hanterade tabeller. Se integreringar för en lista över externa motorer som stöds eller kontrollera motorns dokumentation om den inte finns med i den här listan.

Följande öppna API:er ger externa system åtkomst till hanterade tabeller i Unity Catalog:

  • Unity REST API: Tillhandahåller läs-, skriv- och skapa-åtkomst för Delta-klienter till hanterade Delta-tabeller.
  • Iceberg REST Catalog (IRC): Ger läs-, skriv- och skapa-åtkomst för Iceberg-klienter till hanterade Isbergstabeller och skrivskyddad åtkomst till Delta-tabeller med Isbergsläsningar aktiverade (UniForm).

Båda API:erna har stöd för tillhandahållande av autentiseringsuppgifter, vilket ger tillfälliga, avgränsade autentiseringsuppgifter som ärver den begärande Azure Databricks-principalen och som upprätthåller styrnings- och säkerhetskontroller.

Deltadelning är dessutom ett protokoll med öppen källkod som ger säker och styrd dataåtkomst till externa partner och plattformar. Du kan använda Delta Sharing för att ge partner tillfällig, endast läsbehörighet.

Alla läsningar och skrivningar till hanterade tabeller måste använda tabellnamn och katalog- och schemanamn där de finns. Till exempel catalog_name.schema_name.table_name. Sökvägsbaserad åtkomst till hanterade Unity Catalog-tabeller stöds inte (förutom i kompatibilitetsläge) eftersom den kringgår åtkomstkontrollerna i Unity Catalog och förhindrar att hanterade tabellfunktioner fungerar korrekt.

Skapa en hanterad tabell

Om du vill skapa en hanterad tabell måste du ha:

  • USE SCHEMA i tabellens överordnade schema.
  • USE CATALOG i tabellens överordnade katalog.
  • CREATE TABLE i tabellens överordnade schema.

Använd följande SQL-syntax för att skapa en tom hanterad tabell med SQL. Ersätt platshållarvärdena:

  • <catalog-name>: Namnet på katalogen som ska innehålla tabellen.
  • <schema-name>: Schemats namn som innehåller tabellen.
  • <table-name>: Ett namn för tabellen.
  • <column-specification>: Varje kolumns namn och datatyp.
-- Create a managed Delta table
CREATE TABLE <catalog-name>.<schema-name>.<table-name>
(
  <column-specification>
);

-- Create a managed Iceberg table
CREATE TABLE <catalog-name>.<schema-name>.<table-name>
(
  <column-specification>
)
USING iceberg;

För att upprätthålla prestanda för läsningar och skrivningar kör Azure Databricks regelbundet åtgärder för att optimera hanterade Iceberg-tabellmetadata. Den här uppgiften utförs med hjälp av serverlös beräkning, som har MODIFY behörigheter i tabellen Iceberg. Den här åtgärden skrivs endast till tabellens metadata och beräkningen behåller endast behörigheter till tabellen under jobbets varaktighet.

Note

Om du vill skapa en isbergstabell anger du USING iceberguttryckligen . Annars skapar Azure Databricks en Delta Lake-tabell som standard.

Du kan skapa hanterade tabeller från frågeresultat eller DataFrame-skrivåtgärder. Följande artiklar visar några av de många mönster som du kan använda för att skapa en hanterad tabell i Azure Databricks:

Ta bort en hanterad tabell

Om du vill ta bort en hanterad tabell måste du ha:

  • MANAGE i tabellen eller så måste du vara tabellägare.
  • USE SCHEMA i tabellens överordnade schema.
  • USE CATALOG i tabellens överordnade katalog.

Om du vill släppa en hanterad tabell kör du följande SQL-kommando:

DROP TABLE IF EXISTS catalog_name.schema_name.table_name;

Unity Catalog stöder kommandot för att återställa borttagna UNDROP TABLE hanterade tabeller i 8 dagar. Efter 8 dagar markerar Azure Databricks underliggande data för borttagning från molnklientorganisationen och tar bort filer under automatiserat tabellunderhåll. Se UNDROP.