Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Viktigt!
Den här funktionen är i offentlig förhandsversion och är endast tillgänglig för deltagande kunder just nu. För att delta i förhandsvisningen, ansök genom att fylla i det här formuläret. Den här funktionen stöder endast konvertering av utländska tabeller som federerats med HMS och Glue Federation.
Den här sidan beskriver hur du använder SET MANAGED för att konvertera en sekundär tabell till en hanterad tabell.
- Mer information om hur du konverterar en extern tabell till en hanterad tabell finns i Konvertera en extern tabell till en hanterad Unity Catalog-tabell
- Mer information om hur du konverterar en sekundär tabell till en extern tabell finns i Konvertera en sekundär tabell till en extern Unity Catalog-tabell
SET MANAGED översikt
Använd funktionen SET MANAGED för att konvertera en sekundär tabell till en hanterad Unity Catalog-tabell i Azure Databricks.
SET MANAGED erbjuder följande fördelar:
- Behåller tabellhistoriken.
- Behålla samma tabellkonfigurationer, inklusive samma namn, inställningar, behörigheter och vyer.
- Dra nytta av förutsägande optimering. När du konverterar en tabell till hanterad, ställs prediktiv optimering in på
INHERIT, vilket innebär att inställningen ärvs från schema- eller katalognivå. Som standard är detta inaktiverat för närvarande. Du kan aktivera förutsägelseoptimering i den konverterade tabellen genom att köraALTER TABLE <table_name> ENABLE PREDICTIVE OPTIMIZATION, som anger den tillENABLEDi stället förINHERIT.
Förutsättningar
- Dataformat: Den externa tabellens dataformat måste vara Delta Lake. Information om hur du utför en engångskonvertering för Parquet finns i Konvertera till Delta Lake.
- Tabelltyp: HMS-tabelltypen måste vara en extern HMS-tabell. Kommandot misslyckas om tabellen är en hanterad HMS-tabell.
- Körmiljö: Databricks Runtime 17.3 eller senare
-
Behörigheter:
OWNERellerMANAGEbehörigheter i tabellen ochCREATEbehörigheten påEXTERNAL LOCATION
Syntax
Kör följande kommando för att konvertera den externa Unity Catalog-tabellen till en styrd Unity Catalog-tabell.
ALTER TABLE source_table SET MANAGED {MOVE | COPY}
Parameterar
source_table
En befintlig extern tabell i Unity Catalog. Utländska tabeller innehåller data och metadata som hanteras av en extern katalog. Om du släpper källtabellen i den externa katalogen tas även den externa tabellen bort i Unity Catalog innan konverteringen. När tabellen har konverterats till en hanterad enhetskatalogtabell påverkar inte borttagning av källtabellen i den externa katalogen den hanterade enhetskatalogtabellen.
MOVEKonverterar tabellen till hanterad och inaktiverar åtkomst till källtabellen i den externa katalogen.
Åtkomst via den externa katalogen eller sökvägsbaserad åtkomst misslyckas när tabellen har konverterats. Alla läsare och författare till tabellen måste använda Unity Catalog-namnområdet för åtkomst.
Alla läsare och författare måste använda namnbaserad åtkomst. Till exempel:
SELECT * FROM catalog_name.schema_name.table_name;Sökvägsbaserad åtkomst stöds inte och misslyckas när tabellen har konverterats. Till exempel:
SELECT * FROM delta.`protocol://path/to/table`;Externa (icke-Azure Databricks)-klienter måste ha stöd för läsningar till hanterade Unity Catalog-tabeller. Se Kompatibilitetsläge.
Använd Instrumentpanelen för Access Insights för att se om läsare och författare som kommer åt dina tabeller är Databricks Runtime eller externa icke-Azure Databricks-klienter.
Azure Databricks-läsare och skrivare måste använda Databricks Runtime 15.4 LTS eller senare. Om dina läsare eller författare använder Databricks Runtime 14.3 LTS eller nedan kan du läsa Alternativa alternativ för läsare och författare på Databricks Runtime 14.3 LTS eller nedan.
Stilleståndstid kan uppstå när läsare eller skrivare kommer åt tabellen under konverteringen. Mer information finns i Konvertera en extern tabell till en hanterad Unity Catalog-tabell.
Om kommandot avbryts kan tabellen lämnas som en extern tabell eftersom konverteringen till hanterad var ofullständig. Slutför kommandot genom att köra
SET MANAGEDigen i den externa tabellen.Förutsägande optimering är inställt på
INHERITom du inte har konfigurerat den manuellt. Om du vill kontrollera om förutsägelseoptimering är aktiverat kan du läsa Kontrollera om förutsägande optimering är aktiverat.Återställning: Kör kommandot för att återställa tabellmigreringen och återfå åtkomsten till källtabellen
UNSET MANAGEDi den externa katalogen. Tabellen blir en extern tabell när kommandot har körts. Om du vill returnera tabellen till en sekundär tabell släpper du tabellen så att den federeras om som sekundär i nästa katalogsynkronisering.ALTER TABLE catalog.schema.my_managed_table UNSET MANAGEDVarning
Du MÅSTE köra
UNSET MANAGEDinnan du tar bort tabellen. Om du tar bort tabellen utan att köraUNSET MANAGEDförst kan ditt system hamna i ett dåligt tillstånd och leda till dataförlust eller inkonsekvenser.Om du återställer är incheckningar som du har gjort till den externa platsen mellan konverteringen och återställningen tidsförsebara efter version, men inte med tidsstämpel. Sju dagar efter återställningen tas data på den hanterade platsen bort. För läsare och författare i Databricks Runtime 15.4 LTS eller senare är tabellhistorik för incheckningar som gjorts efter konverteringen men före återställning tidsfördröjlig efter version men inte med tidsstämpel.
Efter tabellkonvertering måste du:
- Starta om alla direktuppspelningsjobb (läsa eller skriva) med hjälp av den externa tabellen
- Se till att dina läsare och författare arbetar med den hanterade tabellen.
COPYKonverterar tabellen till hanterad utan att ändra eller inaktivera åtkomst till källtabellen i den externa katalogen.
- Under konverteringen till hanterad kopieras data från källtabellen till den hanterade lagringsplats som definierats för den externa tabellen, vilket skapar två separata kopior: den nya hanterade tabellen och källtabellen i den externa katalogen.
- Till skillnad från
MOVE, där läsningar och skrivningar misslyckas, ansvarar du vid användning avCOPYför att korrekt inaktivera läsningar och skrivningar till källtabellen i den externa katalogen och se till att arbetsbelastningarna har migrerats till den nya katalogen. -
Återställning: För att återställa tabellmigreringen behöver du inte köra
UNSET MANAGEDkommandot eftersom källtabellen inte har störts i den externa katalogen. Ta bort tabellen så federeras den som extern i nästa katalogsynkronisering.
Kontrollera konvertering
Du kan bekräfta att den externa tabellen har konverterats till en hanterad tabell:
DESCRIBE EXTENDED catalog_name.schema_name.table_name
Om tabellen har konverterats, visar Type under col_name som MANAGED under data_type.
Kända begränsningar
Konvertering av sekundärtabeller till hanterade tabeller har följande begränsningar:
Strömmande klienter: Du måste starta om alla strömmande jobb efter konverteringen.
Flera molnregioner: Om standardhanterad plats för ditt Unity Catalog-metaarkiv, katalog eller schema finns i en annan molnregion än lagringsplatsen för den externa tabell som konverteras kan du medföra ytterligare kostnader för dataöverföring mellan regioner. Molnleverantören debiterar dessa avgifter utanför Azure Databricks kontroll. Om du vill kontrollera platserna för schemat, katalogen och metaarkivet använder du följande kommandon:
-- Check schema location DESCRIBE SCHEMA EXTENDED catalog_name.schema_name; -- Check catalog location DESCRIBE CATALOG EXTENDED catalog_name; -- Check metastore location DESCRIBE METASTORE;
Vanliga frågor
Kan jag skapa tabeller och konvertera tabeller i en utländsk katalog?
Ja, du kan skapa externa eller hanterade tabeller i en extern katalog. Beteendet beror på schemakonfigurationen:
-
För Glue- eller eHMS-scheman, eller för scheman med en hanterad plats som angetts i Unity Catalog: Om du kör
CREATE TABLE foreign_catalog.schema.table, skapar detta en hanterad eller extern Unity Catalog-tabell. Tabellen skickas inte eller synkroniseras inte till den externa katalogen. -
För scheman från interna Hive-metaarkivanslutningar: Om du försöker skapa en tabell i ett sekundärschema skapar den fortfarande en sekundär tabell och skapar även en tabell i
hive_metastore. - För Hive-metastore för äldre arbetsytor: Eftersom det är läs- och skrivfederation skapas även en tabell i den interna Hive-metastore om du skapar en tabell i en extern katalog.
Vad händer om mina utländska tabeller stödjs av DBFS?
När vi konverterar en DBFS-stödd tabell lagrar vi den aktuella mappningen av DBFS-sökvägen till molnsökvägen som den externa tabellens molnsökvägsläge.
Kan jag konvertera på schema- eller katalognivå?
Du kan iterera genom dina tabeller i dina scheman för att konvertera individuellt, eller använda projektet discoverx labs för att konvertera hela scheman eller kataloger på en gång:
df = (dx.from_tables("prod.*.*")
.with_sql("ALTER TABLE {full_table_name} SET MANAGED;")
.apply())