Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Azure Databricks podporuje standardní příkazy DDL SQL pro vyřazení a nahrazování tabulek registrovaných pomocí katalogu Unity nebo metastoru Hive. Chování při odstraňování a nahrazování se liší podle typu tabulky a metastoru. Zvolte správný příkaz, který zabrání ztrátě dat nebo selhání souběžné operace.
Kdy odstranit tabulku
Databricks doporučuje odebrat DROP TABLE tabulku z metastoru, pokud chcete tabulku trvale odstranit a nemáte v úmyslu vytvořit novou tabulku ve stejném umístění. Příklad:
DROP TABLE table_name
DROP TABLE má různá chování v závislosti na typu tabulky a na tom, jestli je tabulka zaregistrovaná v katalogu Unity nebo ve starší verzi metastoru Hive.
| Typ tabulky | Metastore | Chování |
|---|---|---|
| Managed | Katalog Unity | Tabulka se odebere z metastoru a podkladová data se označí k odstranění. Spravovanou tabulku můžete UNDROP provést během nakonfigurovaného období obnovení (výchozí 7 dnů). Viz Vyřazení spravované tabulky. |
| Managed | Hive | Tabulka se odebere z metastoru a podkladová data se odstraní. |
| External | Katalog Unity | Tabulka se odstraní z metastoru, nicméně podkladová data zůstanou. Přístupová oprávnění URI se teď řídí externím umístěním, které obsahuje data. |
| External | Hive | Tabulka se odstraní z metastoru, nicméně podkladová data zůstanou. Všechna přístupová oprávnění URI se nemění. |
Katalog Unity udržuje historii tabulek pomocí interního ID tabulky. U všech typů tabulek už po dokončení operace odstranění název dříve registrované tabulky nemá aktivní odkaz na data a historii tabulek z metastoru.
Viz DROP TABLE.
Note
Databricks nedoporučuje vyhazovat a znovu vytvořit tabulku se stejným názvem pro produkční kanály nebo systémy, protože to může vést k neočekávaným výsledkům souběžných operací. Viz Nahrazení dat souběžnými operacemi.
Kdy nahradit tabulku
Databricks doporučuje používat CREATE OR REPLACE TABLE příkazy pro případy použití, kdy chcete plně přepsat cílovou tabulku novými daty. Pokud chcete například přepsat tabulku se všemi daty z adresáře Parquet, spusťte následující příkaz:
CREATE OR REPLACE TABLE table_name
AS SELECT * FROM parquet.`/path/to/files`
CREATE OR REPLACE TABLE má stejnou sémantiku bez ohledu na typ tabulky nebo metastor používané. Následující jsou důležité výhody CREATE OR REPLACE TABLE:
- Obsah tabulky se nahradí, ale identita tabulky se zachová.
- Historie tabulek je zachována a pomocí příkazu můžete vrátit tabulku k dřívější verzi
RESTORE. - Operace je jedna transakce, takže neexistuje čas, kdy tabulka neexistuje.
- Souběžné dotazy čtené z tabulky můžou pokračovat bez přerušení. Vzhledem k tomu, že verze před a po nahrazení stále existuje v historii tabulek, souběžné dotazy mohou podle potřeby odkazovat na některou verzi tabulky.
- Pokud původní tabulka obsahovala masky sloupců, tyto masky se zachovají pro všechny sloupce, které stále existují v nové tabulce. Tím se zajistí zachování zásad přístupu k datům.
Nahrazení dat souběžnými operacemi
Chcete-li provést úplnou náhradu dat v tabulce, která se může použít v souběžných operacích, je nutné použít CREATE OR REPLACE TABLE.
Neměli byste používat následující antivzor:
DROP TABLE IF EXISTS table_name;
CREATE TABLE table_name
AS SELECT * FROM parquet.`/path/to/files`;
U všech typů tabulek, ať už používáte Katalog Unity, může použití tohoto vzoru vést k chybě, vyřazení záznamů nebo poškozených výsledků.
Místo toho Databricks doporučuje vždy používat CREATE OR REPLACE TABLE, jako v následujícím příkladu:
CREATE OR REPLACE TABLE table_name
AS SELECT * FROM parquet.`/path/to/files`
Protože atomická náhrada zachovává historii tabulky, mohou souběžné transakce ověřit verzi zdrojové tabulky, na niž odkazují, a souběžné transakce mohou buď selhat, nebo se vzájemně sladit, aniž by docházelo k neočekávanému chování.