Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Usługa Azure Databricks obsługuje standardowe polecenia SQL DDL do usuwania lub zastępowania tabel zarejestrowanych w Unity Catalogu lub metastore Hive. Sposób usuwania i zastępowania różni się w zależności od typu tabeli i repozytorium metadanych. Wybierz odpowiednie polecenie, aby uniknąć utraty danych lub niepowodzeń operacji współbieżnych.
Kiedy należy usunąć tabelę
Databricks zaleca użycie polecenia DROP TABLE, aby usunąć tabelę z metastore, gdy chcesz trwale usunąć tabelę i nie zamierzasz utworzyć nowej tabeli w tej samej lokalizacji. Przykład:
DROP TABLE table_name
DROP TABLE działa różnie w zależności od typu tabeli oraz od tego, czy tabela jest zarejestrowana w Unity Catalog, czy w starszym magazynie metadanych Hive.
| Typ tabeli | Metastore | Behavior |
|---|---|---|
| Managed | Katalog Unity | Tabela jest usuwana z magazynu metadanych, a dane bazowe są oznaczone do usunięcia. Tabelę zarządzaną można utworzyć UNDROP w skonfigurowanym okresie odzyskiwania (domyślnie 7 dni). Zobacz Usuwanie zarządzanej tabeli. |
| Managed | Hive | Tabela zostanie usunięta z magazynu metadanych, a dane bazowe zostaną usunięte. |
| External | Katalog Unity | Tabela jest usuwana z magazynu metadanych, ale dane bazowe pozostają. Uprawnienia dostępu do identyfikatora URI podlegają teraz lokalizacji zewnętrznej zawierającej dane. |
| External | Hive | Tabela jest usuwana z magazynu metadanych, ale dane bazowe pozostają. Wszelkie uprawnienia dostępu do identyfikatora URI są niezmienione. |
Unity Catalog utrzymuje historię tabel przy użyciu wewnętrznego identyfikatora tabeli. Dla wszystkich typów tabel, po zakończeniu operacji usunięcia, wcześniej zarejestrowana nazwa tabeli nie ma już aktywnego połączenia z danymi i historią tabeli w magazynie metadanych.
Zobacz: DROP TABLE.
Note
Usługa Databricks nie zaleca usuwania, a następnie ponownego tworzenia tabeli przy użyciu tej samej nazwy dla potoków lub systemów produkcyjnych, ponieważ może to spowodować nieoczekiwane wyniki dla operacji współbieżnych. Zobacz Zastępowanie danych operacjami współbieżnymi.
Kiedy zastąpić tabelę
Databricks zaleca używanie instrukcji CREATE OR REPLACE TABLE w scenariuszach, gdzie chcesz całkowicie zastąpić tabelę docelową nowymi danymi. Aby na przykład zastąpić tabelę wszystkimi danymi z katalogu Parquet, uruchom następujące polecenie:
CREATE OR REPLACE TABLE table_name
AS SELECT * FROM parquet.`/path/to/files`
CREATE OR REPLACE TABLE ma tę samą semantyka niezależnie od typu tabeli lub magazynu metadanych w użyciu. Poniżej przedstawiono ważne zalety programu CREATE OR REPLACE TABLE:
- Zawartość tabeli jest zastępowana, ale tożsamość tabeli jest zachowywana.
- Historia tabeli jest zachowywana i można przywrócić tabelę do starszej wersji za
RESTOREpomocą polecenia . - Operacja jest jedną transakcją, więc nigdy nie ma czasu, gdy tabela nie istnieje.
- Równoczesne zapytania odczytu z tabeli mogą być kontynuowane bez przerwy. Ponieważ wersja przed i po zastąpieniu nadal istnieje w historii tabeli, zapytania współbieżne mogą odwoływać się do jednej z wersji tabeli w razie potrzeby.
- Jeśli oryginalna tabela zawiera maski kolumn, te maski są zachowywane dla wszystkich kolumn, które nadal istnieją w nowej tabeli. Dzięki temu zasady dostępu do danych są zachowywane.
Zobacz CREATE TABLE [USING].
Zastępowanie danych operacjami współbieżnymi
Jeśli chcesz wykonać pełne zastąpienie danych w tabeli, która może być używana w operacjach współbieżnych, należy użyć polecenia CREATE OR REPLACE TABLE.
Nie należy stosować następującego antywzorca:
DROP TABLE IF EXISTS table_name;
CREATE TABLE table_name
AS SELECT * FROM parquet.`/path/to/files`;
Dla wszystkich typów tabel, niezależnie od tego, czy używasz Unity Catalog, stosowanie tego wzorca może spowodować błąd, utracone rekordy lub uszkodzone wyniki.
Zamiast tego usługa Databricks zaleca zawsze używanie elementu CREATE OR REPLACE TABLE, jak w poniższym przykładzie:
CREATE OR REPLACE TABLE table_name
AS SELECT * FROM parquet.`/path/to/files`
Ponieważ zastąpienie atomowe zachowuje historię tabeli, współbieżne transakcje mogą weryfikować wersję tabeli źródłowej, do której się odwołują, oraz kończyć się niepowodzeniem lub być uzgadniane bez nieoczekiwanych skutków.