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


A Unity Catalog használata a Delta Live Tables-folyamatokkal

Fontos

A Unity Katalógus Delta Live Tables-támogatása nyilvános előzetes verzióban érhető el.

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 rendelkeznie CREATE 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 és USE 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 modevaló 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_alistá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 INTOhaszná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;