Megosztás a következőn keresztül:


Delta-tábla elvetése vagy cseréje

Az Azure Databricks támogatja az SQL standard DDL-parancsait a Unity Catalogban vagy a Hive-metaadattárban regisztrált táblák eltávolításához és cseréjéhez. Ez a cikk példákat tartalmaz a Delta-táblák elvetéséről és cseréjéről, valamint a szintaxisra vonatkozó javaslatokról a konfigurált környezettől és a kívánt eredménytől függően.

Mikor kell elvetni egy táblát?

DROP TABLE Ha véglegesen törölni szeretné a táblát, és nem kíván új táblát létrehozni ugyanazon a helyen, akkor célszerű eltávolítania egy táblát a metaadattárból. Példa:

DROP TABLE table_name

DROP TABLE különböző szemantikával rendelkezik a tábla típusától és attól függően, hogy a tábla regisztrálva van-e a Unity Catalogban vagy az örökölt Hive-metaadattárban.

Táblatípus Metaadattár Működés
Felügyelt Unity Catalog A rendszer eltávolítja a táblát a metaadattárból, és a mögöttes adatok törlésre vannak megjelölve. A Unity Catalog által felügyelt táblákban 7 napig lehet UNDROP adatokat kezelni.
Felügyelt Hive A rendszer eltávolítja a táblát a metaadattárból, és a mögöttes adatok törlődnek.
Külső Unity Catalog A rendszer eltávolítja a táblát a metaadattárból, de a mögöttes adatok megmaradnak. Az URI hozzáférési jogosultságait mostantól az adatokat tartalmazó külső hely szabályozza.
Külső Hive A rendszer eltávolítja a táblát a metaadattárból, de a mögöttes adatok megmaradnak. Az URI hozzáférési jogosultságai nem változnak.

DROP TABLE a szemantikák különböznek a táblázattípusoktól, a Unity Catalog pedig egy belső táblaazonosító használatával tartja fenn a Delta-táblák előzményeit. Azonban minden tábla közös eredménye, hogy a művelet befejezése után a korábban regisztrált táblanév már nem rendelkezik aktív hivatkozásokkal a metaadattárból származó adatokhoz és táblaelőzményekhez.

Lásd: DROP TABLE.

Feljegyzés

A Databricks nem javasolja a tábla elvetésének és újrakészítésének mintáját az éles folyamatok vagy rendszerek azonos nevével, mivel ez a minta váratlan eredményeket eredményezhet az egyidejű műveletek esetében. Lásd: Adatok cseréje egyidejű műveletekre.

Mikor kell lecserélni egy táblát?

A Databricks utasítások használatát CREATE OR REPLACE TABLE javasolja olyan használati esetekhez, amikor teljesen felülírni szeretné a céltáblát új adatokkal. Ha például egy Delta-táblát szeretne felülírni egy Parquet-címtár összes adatával, futtassa a következő parancsot:

CREATE OR REPLACE TABLE table_name
AS SELECT * FROM parquet.`/path/to/files`

CREATE OR REPLACE TABLE a használt táblatípustól vagy metaadattártól függetlenül ugyanazokkal a szemantikával rendelkezik. Az alábbiak a következők fontos előnyei CREATE OR REPLACE TABLE:

  • A rendszer lecseréli a táblázat tartalmát, de a tábla identitása megmarad.
  • A táblaelőzmények megmaradnak, és a paranccsal visszaállíthatja a táblát egy korábbi verzióra RESTORE .
  • A művelet egyetlen tranzakció, ezért soha nincs olyan időpont, amikor a tábla nem létezik.
  • A táblából beolvasott egyidejű lekérdezések megszakítás nélkül folytathatók. Mivel a csere előtti és utáni verzió továbbra is szerepel a táblaelőzményekben, az egyidejű lekérdezések szükség esetén hivatkozhatnak a tábla bármelyik verziójára.

Lásd: CREATE TABLE [USING].

Adatok cseréje egyidejű műveletekre

Ha olyan táblában szeretné elvégezni az adatok teljes cseréjét, amely egyidejű műveletekben is használható, akkor a következőt kell használnia CREATE OR REPLACE TABLE:

A következő antimintát nem szabad használni:

-- This is an anti-pattern. Avoid doing this!
DROP TABLE IF EXISTS table_name;

CREATE TABLE table_name
AS SELECT * FROM parquet.`/path/to/files`;

A javaslat okai attól függően változnak, hogy felügyelt vagy külső táblákat használ-e, és hogy a Unity Katalógust használja-e, de a mintát használó összes Delta-táblatípus hibát, elvetett rekordokat vagy sérült eredményeket eredményezhet.

Ehelyett a Databricks azt javasolja, hogy mindig használja CREATE OR REPLACE TABLEa következő példához hasonlóan:

CREATE OR REPLACE TABLE table_name
AS SELECT * FROM parquet.`/path/to/files`

Mivel a táblaelőzmények az atomi adatok cseréje során is megmaradnak, az egyidejű tranzakciók ellenőrizhetik a hivatkozott forrástábla verzióját, ezért sikertelenek vagy össze tudják egyeztetni az egyidejű tranzakciókat, ha szükséges, váratlan viselkedés vagy eredmények nélkül.