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
Den här funktionen finns som allmänt tillgänglig förhandsversion.
Important
Stöd för ytlig kloning skiljer sig åt för Unity Catalog-hanterade och externa tabeller. För hanterade tabeller använder du Databricks Runtime 13.3 LTS och senare, och för externa tabeller använder du Databricks Runtime 14.3 LTS och senare.
Du kan bara klona hanterade Unity Catalog-tabeller till andra hanterade Unity Catalog-tabeller och externa Unity Catalog-tabeller till andra externa Unity Catalog-tabeller.
VACUUM beteende skiljer sig mellan hanterade och externa tabeller. Se Använda VACUUM med grunda kloner i Unity Catalog.
Använd en ytlig klon för att skapa Unity Catalog-tabeller med åtkomstkontrollbehörigheter som är oberoende av deras källtabeller, utan att kopiera de underliggande datafilerna. Ytlig klon i Unity Catalog stöds endast för Delta Lake-tabeller. Du kan inte skapa en grund klon av en Iceberg-tabell eller någon annan tabell som inte är en Delta-tabell.
Information om hur du klonar en tabell finns i Klona en tabell i Azure Databricks.
Skapa en hanterad shallow-klon i Unity Catalog
Skapa en ytlig klon av en hanterad tabell i Unity Catalog.
CREATE TABLE <catalog-name>.<schema-name>.<target-table-name>
SHALLOW CLONE <catalog-name>.<schema-name>.<source-table-name>
Om du vill skapa en hanterad ytlig klon i Unity Catalog måste du ha följande behörigheter för käll- och målresurserna.
| Resource | Behörigheter som krävs |
|---|---|
| Källschema | USE SCHEMA |
| Källkatalog | USE CATALOG |
| Målschema |
USE SCHEMA, CREATE TABLE |
| Målkatalog | USE CATALOG |
Precis som andra skapa tabellinstruktioner äger du måltabellen när du kör SHALLOW CLONE. Ägaren till en klonad måltabell styr åtkomsträttigheterna för den tabellen oberoende av källtabellen. Ägaren till en klonad tabell kan skilja sig från ägaren till en källtabell.
Skapa en extern, grund klon av Unity-katalogen
Skapa en extern, ytlig klon i Unity Catalog genom att ange en extern plats.
CREATE TABLE <catalog-name>.<schema-name>.<target-table-name>
SHALLOW CLONE <catalog-name>.<schema-name>.<source-table-name>
LOCATION 's3://<bucket-name>/<path-name>/<target-table-name>'
Om du vill skapa en extern grund klon i Unity Catalog måste du ha följande behörigheter för käll- och målresurserna.
| Resource | Behörigheter som krävs |
|---|---|
| Källschema | USE SCHEMA |
| Källkatalog | USE CATALOG |
| Målschema |
USE SCHEMA, CREATE TABLE |
| Målkatalog | USE CATALOG |
| Extern destinationsplats | CREATE EXTERNAL TABLE |
Arbeta med grunda klonade tabeller i standardåtkomstläge
Om du vill fråga efter en ytlig klon i standardåtkomstläge (tidigare delat åtkomstläge) måste du ha följande behörigheter för tabellen och de resurser som innehåller den:
| Resource | Behörigheter som krävs |
|---|---|
| Catalog | USE CATALOG |
| Schema | USE SCHEMA |
| Bord | SELECT |
Du måste också ha MODIFY behörigheter för målet för kloningsåtgärden för att köra följande åtgärder:
INSERTDELETEUPDATEMERGECREATE TABLEDROP TABLE
Arbeta med grunda klonade tabeller i dedikerat åtkomstläge
När du arbetar med grunda kloner i Unity Catalog i dedikerat åtkomstläge (tidigare åtkomstläge för en enskild användare) måste du ha behörighet för resurserna för både den klonade tabellkällan och måltabellen.
För enkla frågor, förutom de behörigheter som krävs i måltabellen, måste du ha USE behörigheter för källkatalogen och schemat och SELECT behörigheterna i källtabellen. För frågor som uppdaterar eller infogar poster i måltabellen måste du också ha MODIFY behörighet för källtabellen.
Databricks rekommenderar att du använder Unity Catalog-kloner vid beräkning med standardåtkomstläge eftersom detta tillåter oberoende ändringar av behörigheter för grunda klonmål i Unity Catalog och deras källtabeller.
Använda VACUUM med grunda kloner i Unity Catalog
När du använder Unity Catalog-tabeller för källan och målet för en ytlig kloningsåtgärd hanterar Unity Catalog de underliggande datafilerna för att förbättra tillförlitligheten för källan och målet för klonåtgärden. Att köra VACUUM på källan till en ytlig klon gör inte att den klonade tabellen går sönder.
Normalt när VACUUM identifierar giltiga filer för ett visst kvarhållningströskelvärde är det bara metadata för den nuvarande tabellen som beaktas. Unity Catalog har dock stöd för grunda kloner och spårar relationerna mellan alla klonade tabeller och källdatafilerna, så att mängden giltiga filer utökas till att omfatta de datafiler som behövs för att besvara frågor för både grunda kloner och källtabellen.
För VACUUM en grund klon i Unity Catalog är en giltig datafil alla filer inom det angivna kvarhållningströskelvärdet för källtabellen eller en klonad tabell. Hanterade tabeller och externa tabeller har lite olika beteenden.
Den här förbättrade spårningen av metadata ändrar hur VACUUM åtgärder påverkar underliggande datafiler för Delta Lake-tabellerna med följande beteende:
- För hanterade tabeller
VACUUMkan åtgärder på källan eller målet för en ytlig kloningsåtgärd ta bort datafiler från källtabellen. - För externa tabeller
VACUUMtar åtgärder bara bort datafiler från källtabellen när de körs mot källtabellen. - Endast datafiler som inte anses giltiga för källtabellen eller någon ytlig klon mot källan tas bort.
- Om flera grunda kloner har definierats mot en enda källtabell, så tar inte utförandet av
VACUUMpå någon av de klonade tabellerna bort giltiga datafiler för de andra klonade tabellerna.
Note
Databricks rekommenderar att du aldrig kör VACUUM med en kvarhållningsinställning på mindre än 7 dagar för att undvika att skada pågående långvariga transaktioner. Om du behöver ett lägre tröskelvärde för kvarhållning bör du överväga hur VACUUM på grunda kloner i Unity Catalog skiljer sig från hur VACUUM påverkar andra klonade tabeller på Azure Databricks. Mer information finns i Klona en tabell i Azure Databricks.
Även om du tar bort en ytklonad tabell kan du behöva SELECT-åtkomst till den ytklonade tabellen för att köra VACUUM på bastabellen. Databricks läser den grunda klonens Delta-logg för att verifiera vilka bastabelldatafiler klonen fortfarande refererar till innan de dammsugas. Databricks behåller den här länken i 7 dagar efter att en ytklonad tabell har tagits bort för att stödja åtgärden UNDROP. I standardläge för åtkomst krävs dock inte den här behörigheten.
Ta bort bastabellen för en grundlig klon
Du kan ta bort bastabellen för en Unity Catalog-hanterad tabell även när aktiva grunda kloner fortfarande refererar till den. Klonerna fortsätter att läsa tills bastabellens datafiler raderas, vilket då gör dem oanvändbara. Du kan återställa bastabellen med UNDROP under dess återställningsperiod, som som standard är 7 dagar och kan sättas på katalog- eller schema-nivå till 0 (för att inaktivera återställning) eller 7 till 30 dagar. Att konfigurera återställningsperioden finns i Public Preview. Om du inte återställer tabellen raderar en asynkron rensningsprocess sina datafiler efter att återställningsperioden är slut, så klonerna kan fortsätta läsa en tid efter att bastabellen inte längre är återställbar. Om du vill återställa en borttagen bastabell använder du UNDROP.
Note
Vissa arbetsytor upprätthåller skydd mot dropptid för basbord som har grunda kloner. Om DROP TABLE på en sådan bastabell misslyckas med felmeddelandet CANNOT_DROP_BASE_TABLE_REFERENCED_BY_SHALLOW_CLONE, tillämpas detta skydd i din arbetsyta. För att ändå ta bort bastabellen, använd DROP TABLE ... FORCE. Att ta bort bastabellen bryter FORCE referenserna till grundkloner. Klonerna misslyckas med operationer som läser data eller metadata (till exempel SELECT, INSERT, UPDATE, , DESCRIBE HISTORY), CLONEmen förblir synliga för metadatanivåoperationer (till exempel SHOW TABLES, DROP TABLE) så att du kan rensa dem. Detta skydd gäller endast för Unity Catalog-hanterade tabeller.
Limitations
- Ytlig klon stöds endast för Delta Lake-tabeller. Du kan inte skapa en grund klon av en Iceberg-tabell eller någon annan tabell som inte är en Delta-tabell.
- Du kan inte använda
CREATE OR REPLACEför att skriva över en befintlig ytlig klon. AnvändDROP TABLEföljt avCREATE TABLEeller använd ett nytt tabellnamn. - Ytliga kloner av externa tabeller måste vara externa tabeller. Ytliga kloner i hanterade tabeller måste också vara hanterade tabeller.
- Du kan inte dela ytliga kloner med OpenSharing.
- Du kan inte kapsla grunda kloner, vilket innebär att du inte kan göra en grund klon från en grund klon.
- För externa tabeller tar
DROP TABLEinte bort de underliggande datafilerna, så ytliga kloner påverkas inte när källtabellen tas bort. - För hanterade tabeller i Databricks Runtime 13.3 LTS och högre fortsätter grunda kloner av en borttagen källtabell att fungera tills källdatafilerna raderas. Se Ta bort grundtabellen för en grundläggande klon.