A Unity Catalog használata a Delta Live Tables-folyamatokkal
A Táblák Hive-metaadattárban való megőrzésének meglévő támogatása mellett a Unity Catalog és a Delta Live Tables-folyamatok a következő célokra használhatók:
- Adjon meg egy katalógust a Unity Katalógusban, ahol a folyamat táblákat fog őrizni.
- Adatok olvasása Unity Catalog-táblákból.
A munkaterület tartalmazhat unity katalógust vagy Hive-metaadattárat használó folyamatokat. Egyetlen folyamat azonban nem tud írni mind a Hive metaadattárba, mind a Unity Katalógusba, és a meglévő folyamatok nem frissíthetők a Unity Catalog használatára. A Unity Katalógust nem használó meglévő folyamatokat ez az előzetes verzió nem érinti, és továbbra is megőrzi az adatokat a Hive metaadattárában a konfigurált tárolási hely használatával.
Ha a dokumentum másként nem rendelkezik, az összes meglévő adatforrás és Delta Live Tables funkció támogatott a Unity Catalogot használó folyamatokkal. A Python és az SQL-felületek egyaránt támogatottak a Unity Catalogot használó folyamatokkal.
A folyamatban létrehozott táblák a Databricks Runtime 13.3 LTS-sel vagy egy SQL-raktárral is lekérdezhetők a megosztott Unity Catalog-fürtökről. A táblák nem kérdezhetők le a hozzárendelt vagy az elkülönítési fürtökről.
A Unity Catalog-folyamat által létrehozott táblák engedélyeinek kezeléséhez használja a GRANT és a REVOKE parancsot.
Követelmények
A Következők szükségesek ahhoz, hogy táblákat hozzon létre a Unity Catalogban egy Delta Live Tables-folyamatból:
- Rendelkeznie
USE CATALOG
kell jogosultságokkal a célkatalógusban. - Ha a folyamat materializált nézeteket hoz létre, rendelkeznie kell és
USE SCHEMA
jogosultságokkal kell rendelkeznieCREATE MATERIALIZED VIEW
a célsémában. - Ha a folyamat streamelési táblákat hoz létre, rendelkeznie
CREATE TABLE
kell a célsémában lévő jogosultságokkal ésUSE SCHEMA
jogosultságokkal. - Ha a célséma nincs megadva a folyamatbeállításokban, a célkatalógusban legalább egy sémán rendelkeznie kell vagy jogosultságokkal kell rendelkeznie
CREATE MATERIALIZED VIEW
CREATE TABLE
.
Korlátozások
A Unity Catalog és a Delta Live Tables használata esetén a következők a korlátozások:
Alapértelmezés szerint csak a folyamat tulajdonosának és a munkaterület rendszergazdáinak van engedélye megtekinteni a Unity Catalog-kompatibilis folyamatot futtató fürt illesztőprogram-naplóit. Ha engedélyezni szeretné a hozzáférést más felhasználók számára az illesztőprogram-naplók megtekintéséhez, tekintse meg a nem rendszergazdai felhasználók számára az illesztőprogram-naplók Unity Katalógus-kompatibilis folyamatból való megtekintését.
A Hive metaadattárat használó meglévő folyamatok nem frissíthetők a Unity Catalog használatára. A Hive metaadattárba írt meglévő folyamat migrálásához létre kell hoznia egy új folyamatot, és újra kell betöltenie az adatokat az adatforrás(ok)ból.
A Unity Katalógus nyilvános előzetes verziójában létrehozott metaadattárhoz csatolt munkaterületen nem hozható létre Unity Catalog-kompatibilis folyamat. Lásd: Frissítés jogosultságöröklésre.
A JAR-ek nem támogatottak. A külső kódtárak telepítése csak Python-kódtárak esetén támogatott. Lásd: Python-függőségek kezelése Delta Live Tables-folyamatokhoz.
A streamelési tábla sémáját módosító adatmanipulációs nyelvi (DML-) lekérdezések nem támogatottak.
A Delta Live Tables-folyamatban létrehozott materializált nézet nem használható streamforrásként a folyamaton kívül, például egy másik folyamatban vagy egy alárendelt jegyzetfüzetben.
A felügyelt tárhelyet meghatározó sémákban való közzététel csak az előzetes verziós csatornán támogatott.
Ha egy folyamat egy felügyelt tárhellyel rendelkező sémában tesz közzé, a séma egy későbbi frissítésben módosítható, de csak akkor, ha a frissített séma ugyanazt a tárolási helyet használja, mint a korábban megadott séma.
Ha a célséma egy tárolási helyet határoz meg, a rendszer minden táblát ott tárol. Ha nincs megadva sématároló hely, a rendszer a táblákat a katalógus tárolóhelyén tárolja, ha a célkatalógus megad egyet. Ha nincs megadva séma- és katalógustárolási hely, a rendszer a táblákat annak a metaadattárnak a gyökértárolójában tárolja, ahol a táblák közzé vannak téve.
A Katalóguskezelő Előzmények lapja nem jeleníti meg a streamelőzménytáblák és a materializált nézetek előzményeit.
A
LOCATION
tulajdonság tábla definiálásakor nem támogatott.A Unity catalog-kompatibilis folyamatok nem tehetők közzé a Hive-metaadattárban.
A Python UDF támogatása nyilvános előzetes verzióban érhető el. A Python UDF-ek használatához a folyamatnak az előnézeti csatornát kell használnia.
A Delta-megosztás nem használható a Unity Catalogban közzétett Delta Live Tables materializált nézettel vagy streamelő táblával.
A táblaértékelt függvény nem használható
event_log
egy folyamatban vagy lekérdezésben több folyamat eseménynaplóinak eléréséhez.A táblaértékelt függvényen
event_log
létrehozott nézet nem osztható meg más felhasználókkal.Az egycsomópontos fürtök nem támogatottak unitykatalógus-kompatibilis folyamatokkal. Mivel a Delta Live Tables egy egycsomópontos fürtöt hozhat létre kisebb folyamatok futtatásához, előfordulhat, hogy a folyamat egy hibaüzenetre
single-node mode
való hivatkozással meghiúsul. Ha ez történik, győződjön meg arról, hogy a számítási beállítások konfigurálásakor legalább egy feldolgozót megad.A Unity catalog-kompatibilis folyamatban létrehozott táblákat nem lehet lekérdezni a hozzárendelt vagy nem elkülönített fürtökből. A Delta Live Tables-folyamat által létrehozott táblák lekérdezéséhez a Databricks Runtime 13.3 LTS-sel vagy egy SQL-raktárral közös hozzáférési módú fürtöt kell használnia.
A Delta Live Tables megosztott hozzáférési módú fürtöt használ unitykatalógus-kompatibilis folyamat futtatásához. A Unity-katalógust engedélyező folyamat nem futtatható hozzárendelt fürtön. A Megosztott hozzáférési mód és a Unity Catalog korlátainak megismeréséhez tekintse meg a Unity Catalog megosztott hozzáférési módra vonatkozó korlátozásait.
A Unity Catalogban közzétett materializált nézetekkel vagy streamtáblákkal nem használhat sorszűrőket vagy oszlopmaszkokat.
Feljegyzés
A materializált nézeteket támogató mögöttes fájlok tartalmazhatnak olyan felsőbb rétegbeli táblákból származó adatokat (beleértve a személyazonosításra alkalmas adatokat is), amelyek nem jelennek meg a materializált nézetdefinícióban. Ezeket az adatokat a rendszer automatikusan hozzáadja a mögöttes tárolóhoz a materializált nézetek növekményes frissítése érdekében.
Mivel a materializált nézet alapjául szolgáló fájlok a materializált nézet sémájának nem részét képező felsőbb rétegbeli táblákból származó adatok feltárását kockáztathatják, a Databricks azt javasolja, hogy ne ossza meg az alapul szolgáló tárolót a nem megbízható alsóbb rétegbeli felhasználókkal.
Tegyük fel például, hogy egy materializált nézet definíciója tartalmaz egy záradékot COUNT(DISTINCT field_a)
. Annak ellenére, hogy a materializált nézetdefiníció csak az összesítő záradékot COUNT DISTINCT
tartalmazza, a mögöttes fájlok tartalmazzák a tényleges értékek field_a
listáját.
Meglévő funkciók módosítása
Ha a Delta Live Tables úgy van konfigurálva, hogy megőrizze az adatokat a Unity Catalogban, a tábla életciklusát a Delta Live Tables folyamat felügyeli. Mivel a folyamat kezeli a tábla életciklusát és engedélyeit:
- Amikor eltávolít egy táblát a Delta Live Tables folyamatdefiníciójából, a rendszer a következő folyamatfrissítéskor eltávolítja a megfelelő materializált nézetet vagy streamelési táblázat bejegyzést a Unity Katalógusból. A tényleges adatok egy ideig megmaradnak, hogy helyreállíthatók legyenek, ha tévedésből törölték őket. Az adatok helyreállításához vegye fel a materializált nézetet vagy a streamelési táblát a folyamatdefinícióba.
- A Delta Live Tables folyamat törlése az adott folyamatban definiált összes tábla törlését eredményezi. A változás miatt a Delta Live Tables felhasználói felülete frissül, hogy rákérdezjen a folyamat törlésének megerősítésére.
- A belső háttértáblák, beleértve a támogatáshoz
APPLY CHANGES INTO
használt háttértáblákat, nem érhetők el közvetlenül a felhasználók számára.
Táblák írása a Unity Katalógusba Delta Live Tables-folyamatból
Feljegyzés
Ha nem jelöl ki katalógust és célsémát egy folyamathoz, a rendszer nem teszi közzé a táblákat a Unity Katalógusban, és csak ugyanabban a folyamatban lévő lekérdezések férhetnek hozzá.
Ha a táblákat a Unity Katalógusba szeretné írni, amikor létrehoz egy folyamatot, válassza a Unity katalógust a Tárolási beállítások területen, válasszon ki egy katalógust a Katalógus legördülő menüben, és válasszon ki egy meglévő sémát, vagy adja meg egy új séma nevét a Célséma legördülő menüben. A Unity Catalog-katalógusokról az Azure Databricks katalógusai című témakörben olvashat. A Unity Catalog sémáinak megismeréséhez tekintse meg az Azure Databricks sémáinak listáját.
Adatok betöltése Unity Catalog-folyamatba
A Unity Catalog használatára konfigurált folyamat a következő adatokból tud adatokat olvasni:
- A Unity Catalog által felügyelt és külső táblák, nézetek, materializált nézetek és streamelési táblák.
- Metaadattártáblák és nézetek hive-ként való használata.
- Automatikus betöltő a függvény használatával a
cloud_files()
Unity Katalógus külső helyéről való olvasáshoz. - Apache Kafka és Amazon Kinesis.
Az alábbiakban példákat láthat a Unity Catalog és a Hive metaadattár tábláinak olvasására.
Batch-betöltés Unity-katalógustáblából
SQL
CREATE OR REFRESH MATERIALIZED VIEW
table_name
AS SELECT
*
FROM
my_catalog.my_schema.table1;
Python
@dlt.table
def table_name():
return spark.table("my_catalog.my_schema.table")
Változások streamelése Unity-katalógustáblából
SQL
CREATE OR REFRESH STREAMING TABLE
table_name
AS SELECT
*
FROM
STREAM(my_catalog.my_schema.table1);
Python
@dlt.table
def table_name():
return spark.readStream.table("my_catalog.my_schema.table")
Adatok betöltése a Hive metaadattárából
A Unity-katalógust használó folyamatok a katalógus használatával beolvashatják az adatokat a hive_metastore
Hive metaadattártábláiból:
SQL
CREATE OR REFRESH MATERIALIZED VIEW
table_name
AS SELECT
*
FROM
hive_metastore.some_schema.table;
Python
@dlt.table
def table3():
return spark.table("hive_metastore.some_schema.table")
Adatok betöltése az automatikus betöltőből
SQL
CREATE OR REFRESH STREAMING TABLE
table_name
AS SELECT
*
FROM
cloud_files(
<path-to-uc-external-location>,
"json"
)
Python
@dlt.table(table_properties={"quality": "bronze"})
def table_name():
return (
spark.readStream.format("cloudFiles")
.option("cloudFiles.format", "json")
.load(f"{path_to_uc_external_location}")
)
Materializált nézetek megosztása
A folyamat által létrehozott táblákat alapértelmezés szerint csak a folyamat tulajdonosa kérdezheti le. Lehetővé teheti más felhasználóknak, hogy a GRANT utasításokkal lekérdezhessék a táblát, és visszavonhatják a lekérdezési hozzáférést a VISSZAVONÁS utasításokkal. A Unity Catalog jogosultságairól további információt a Jogosultságok kezelése a Unity Katalógusban című témakörben talál.
Kijelölés megadása egy táblában
GRANT SELECT ON TABLE
my_catalog.my_schema.table_name
TO
`user@databricks.com`
Kijelölés visszavonása egy táblában
REVOKE SELECT ON TABLE
my_catalog.my_schema.table_name
FROM
`user@databricks.com`
Tábla létrehozása vagy materializált nézetjogjogok létrehozása
GRANT CREATE { MATERIALIZED VIEW | TABLE } ON SCHEMA
my_catalog.my_schema
TO
{ principal | user }
Folyamathoz tartozó vonalasság megtekintése
A Delta Live Tables-folyamat tábláinak vonala látható a Katalóguskezelőben. A Unity Catalog-kompatibilis folyamat materializált nézetei vagy streamtáblái esetében a Katalóguskezelő vonalas felhasználói felülete megjeleníti a felső és az alsóbb rétegbeli táblákat. Ha többet szeretne megtudni a Unity Catalog-életútról, tekintse meg és rögzítse az adatsorokat a Unity Catalog használatával.
A Unity catalog-kompatibilis Delta Live Tables-folyamatok materializált nézetei vagy streamelési táblái esetében a Catalog Explorer termékoldali felhasználói felülete a materializált nézetet vagy streamelési táblát előállító folyamatra is hivatkozik, ha a folyamat elérhető az aktuális munkaterületről.
Adatok hozzáadása, módosítása vagy törlése streamelési táblázatban
A Unity Catalogban közzétett streamtáblák módosításához használhat adatmanipulációs nyelvi (DML) utasításokat, például beszúrási, frissítési, törlési és egyesítési utasításokat. A DML-lekérdezések streamelési táblákon való támogatása olyan használati eseteket tesz lehetővé, mint például a táblák frissítése az általános adatvédelmi rendelet (GDPR) megfelelőségéhez.
Feljegyzés
- A streamelési tábla táblázatsémát módosító DML-utasítások nem támogatottak. Győződjön meg arról, hogy a DML-utasítások nem próbálják továbbfejleszteni a táblázatsémát.
- A streamelési táblát frissítő DML-utasítások csak megosztott Unity Catalog-fürtön vagy SQL-raktárban futtathatók a Databricks Runtime 13.3 LTS és újabb verziók használatával.
- Mivel a streameléshez csak hozzáfűző adatforrások szükségesek, ha a feldolgozáshoz forrásstreamelési táblából kell streamelni a módosításokat (például DML-utasítások alapján), állítsa be a skipChangeCommits jelölőt a forrásstreamelési tábla olvasása során. Ha
skipChangeCommits
be van állítva, a rendszer figyelmen kívül hagyja a forrástábla rekordjait törlő vagy módosító tranzakciókat. Ha a feldolgozáshoz nincs szükség streamelési táblára, céltáblaként használhat materializált nézetet (amely nem rendelkezik csak hozzáfűzési korlátozással).
Az alábbiakban olyan DML-utasításokat mutatunk be, amelyek módosítják a streamelési táblák rekordjait.
Adott azonosítójú rekordok törlése:
DELETE FROM my_streaming_table WHERE id = 123;
Adott azonosítójú rekordok frissítése:
UPDATE my_streaming_table SET name = 'Jane Doe' WHERE id = 123;
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: