Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Azure Databricks ondersteunt SQL-standaard DDL-opdrachten voor het verwijderen en vervangen van tabellen die zijn geregistreerd met Unity Catalog of de Hive-metastore. Het gedrag van verwijderen en vervangen verschilt afhankelijk van het tabeltype en de metastore. Kies de juiste opdracht om gegevensverlies of gelijktijdige bewerkingsfouten te voorkomen.
Wanneer een tabel te verwijderen
Databricks raadt u DROP TABLE aan om een tabel uit de metastore te verwijderen wanneer u de tabel permanent wilt verwijderen en geen nieuwe tabel op dezelfde locatie wilt maken. Voorbeeld:
DROP TABLE table_name
DROP TABLE heeft verschillende gedragingen, afhankelijk van het type tabel en of de tabel is geregistreerd bij Unity Catalog of de verouderde Hive-metastore.
| Tabeltype | Metastore | Gedrag |
|---|---|---|
| Managed | Unity Catalogus | De tabel wordt verwijderd uit de metastore en onderliggende gegevens worden gemarkeerd voor verwijdering. U kunt UNDROP een beheerde tabel binnen de geconfigureerde herstelperiode (standaard: 7 dagen). Zie Een beheerde tabel neerzetten. |
| Managed | Hive | De tabel wordt verwijderd uit de metastore en de onderliggende gegevens worden verwijderd. |
| External | Unity Catalogus | De tabel wordt verwijderd uit de metastore, maar de onderliggende gegevens blijven behouden. URI-toegangsbevoegdheden worden nu beheerd door de externe locatie die de gegevens bevat. |
| External | Hive | De tabel wordt verwijderd uit de metastore, maar de onderliggende gegevens blijven behouden. Alle URI-toegangsbevoegdheden zijn ongewijzigd. |
Unity Catalog onderhoudt een geschiedenis van tabellen met behulp van een interne tabel-id. Voor alle tabeltypen geldt dat de eerder geregistreerde tabelnaam, nadat de dropbewerking is afgerond, niet langer een actieve koppeling heeft met gegevens en de tabelgeschiedenis in de metastore.
Zie DROP TABLE.
Note
Databricks raadt u niet aan om een tabel te verwijderen en vervolgens opnieuw te maken met dezelfde naam voor productiepijplijnen of -systemen, omdat dit onverwachte resultaten kan opleveren voor gelijktijdige bewerkingen. Zie Gegevens vervangen door gelijktijdige bewerkingen.
Wanneer een tabel moet worden vervangen
Databricks raadt aan om CREATE OR REPLACE TABLE instructies te gebruiken voor use cases waarin u de doeltabel volledig wilt overschrijven met nieuwe gegevens. Als u bijvoorbeeld een tabel met alle gegevens uit een Parquet-map wilt overschrijven, voert u de volgende opdracht uit:
CREATE OR REPLACE TABLE table_name
AS SELECT * FROM parquet.`/path/to/files`
CREATE OR REPLACE TABLE dezelfde semantiek heeft, ongeacht het tabeltype of de metastore die wordt gebruikt. Het volgende zijn belangrijke voordelen van CREATE OR REPLACE TABLE:
- De inhoud van de tabel wordt vervangen, maar de tabelidentiteit blijft behouden.
- De tabelgeschiedenis blijft behouden en u kunt de tabel terugzetten naar een eerdere versie met de opdracht
RESTORE. - De bewerking is één transactie, dus er is nooit een tijdstip waarop de tabel niet bestaat.
- Gelijktijdige query's die uit de tabel worden gelezen, kunnen zonder onderbreking worden voortgezet. Omdat de versie vóór en na vervanging nog steeds bestaat in de tabelgeschiedenis, kunnen gelijktijdige query's zo nodig verwijzen naar een van beide versies van de tabel.
- Als de oorspronkelijke tabel kolommaskers bevat, blijven deze maskers behouden voor alle kolommen die nog in de nieuwe tabel aanwezig zijn. Dit zorgt ervoor dat beleid voor gegevenstoegang behouden blijft.
Zie CREATE TABLE [USING].
Gegevens vervangen door gelijktijdige bewerkingen
Als u een volledige vervanging wilt uitvoeren van gegevens in een tabel die mogelijk worden gebruikt in gelijktijdige bewerkingen, moet u gebruiken CREATE OR REPLACE TABLE.
Gebruik het volgende antipatroon niet:
DROP TABLE IF EXISTS table_name;
CREATE TABLE table_name
AS SELECT * FROM parquet.`/path/to/files`;
Voor alle tabeltypen, ongeacht of u Unity Catalog gebruikt, kan dit patroon resulteren in een fout, verwijderde records of beschadigde resultaten.
In plaats daarvan raadt Databricks aan altijd gebruik te maken CREATE OR REPLACE TABLE, zoals in het volgende voorbeeld:
CREATE OR REPLACE TABLE table_name
AS SELECT * FROM parquet.`/path/to/files`
Omdat atomische vervanging de tabelgeschiedenis behoudt, kunnen gelijktijdige transacties de versie van de brontabel valideren waarnaar ze verwijzen en mislukken of gelijktijdige transacties afstemmen zonder onverwacht gedrag.