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


Adatok betöltése streamelő táblák használatával a Databricks SQL-ben

A Databricks azt javasolja, hogy streaming táblák használatával olvassa be az adatokat a Databricks SQL segítségével. A streamelési tábla a Unity Catalogban regisztrált tábla, amely további támogatást nyújt a streameléshez vagy a növekményes adatfeldolgozáshoz. A rendszer automatikusan létrehoz egy DLT-folyamatot az egyes streamelési táblákhoz. Streamtáblák használatával növekményes adatbetöltést végezhet a Kafkából és a felhőobjektum-tárolóból.

Ez a cikk bemutatja, hogyan tölthetők be adatok streamelési táblák használatával a felhőobjektum-tárolóból, amelyet Unity Catalog kötetként (ajánlott) vagy külső helyként konfiguráltak.

Megjegyzés

Ha meg szeretné tudni, hogyan használhatja a Delta Lake-táblákat streamelő forrásként és fogadóként, olvassa el a Delta táblastreamelési olvasásait és írásait.

Fontos

A Databricks SQL környezetben létrehozott streamelési táblákat egy kiszolgáló nélküli DLT-folyamat támogatja. A munkaterületnek támogatnia kell a kiszolgáló nélküli folyamatokat a funkció használatához.

Előkészületek

A kezdés előtt meg kell felelnie az alábbi követelményeknek.

Munkaterületre vonatkozó követelmények:

  • Egy Azure Databricks-fiók, amelyen engedélyezve van a szerver nélküli üzemmód. További információ: Kiszolgáló nélküli SQL-tárolók engedélyezése.
  • Egy olyan munkaterület, amelyen engedélyezve van a Unity Catalog. További információ: Unity Catalog beállítása és kezelése.

Számítási követelmények:

Az alábbiak egyikét kell használnia:

  • A csatornát Current használó SQL-raktár.
  • Számítás standard hozzáférési móddal (korábban megosztott hozzáférési mód) a Databricks Runtime 13.3 LTS vagy újabb verzióján.
  • A Databricks Runtime 15.4 LTS vagy újabb verzióján dedikált hozzáférési móddal (korábban egyfelhasználós hozzáférési móddal) végzett számítás.

    A Databricks Runtime 15.3-on és az alábbi verziókban nem használhat dedikált számítást a más felhasználóktulajdonában lévő streamtáblák lekérdezéséhez. Dedikált számítást csak akkor használhat a Databricks Runtime 15.3-on és alatta, ha a streamelési táblázat tulajdonosa. A tábla létrehozója a tulajdonos.

    A Databricks Runtime 15.4 LTS és újabb verziók támogatják a DLT által létrehozott táblák lekérdezéseit a dedikált számításon, a tábla tulajdonjogától függetlenül. A Databricks Runtime 15.4 LTS és újabb verzióiban biztosított adatszűrés előnyeinek kihasználásához meg kell győződnie arról, hogy a munkaterület engedélyezve van a kiszolgáló nélküli számítási, mert a DLT által létrehozott táblákat támogató adatszűrési funkciók kiszolgáló nélküli számításon futnak. A kiszolgáló nélküli számítási erőforrásokért díjat számolhat fel, ha dedikált számítással futtat adatszűrési műveleteket. Lásd: finomhangolt hozzáférés-vezérlés dedikált számítási környezetben (korábban egyfelhasználós számítás).

Engedélykövetelmények:

  • A READ FILES Unity-katalógus külső helyének jogosultsága. További információ: Külső hely létrehozása a felhőbeli tároló Azure Databrickshez való csatlakoztatásához.
  • A USE CATALOG katalógus azon jogosultsága, amelyben a streamelési táblát létrehozza.
  • Azon USE SCHEMA séma jogosultsága, amelyben a streamelési táblázatot hozza létre.
  • Azon CREATE TABLE séma jogosultsága, amelyben a streamelési táblázatot hozza létre.

Egyéb követelmények:

  • A forrásadatok elérési útja.

    Példa kötetútvonalra: /Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>

    Példa külső hely elérési útjára: abfss://myContainer@myStorageAccount.dfs.core.windows.net/analysis

    Feljegyzés

    Ez a cikk feltételezi, hogy a betölteni kívánt adatok egy felhőbeli tárolóhelyen találhatók, amely egy Unity Catalog-kötetnek vagy egy olyan külső helynek felel meg, amelyhez hozzáféréssel rendelkezik.

Forrásadatok felderítése és előnézete

  1. A munkaterület oldalsávjában kattintson a Lekérdezések elemre, majd a Lekérdezés létrehozása parancsra.

  2. A lekérdezésszerkesztőben válasszon ki egy sql warehouse-t, amely a Current csatornát használja a legördülő listából.

  3. Illessze be a következőt a szerkesztőbe, és helyettesítse az értékeket szögletes zárójelekben (<>) a forrásadatokat azonosító információkhoz, majd kattintson a Futtatás gombra.

    Feljegyzés

    Sémakövetkeztetési hibákat tapasztalhat a read_files táblaértékelő függvény futtatásakor, ha a függvény alapértelmezett értékei nem tudják elemezni az adatokat. Előfordulhat például, hogy többsoros módot kell konfigurálnia többsoros CSV- vagy JSON-fájlokhoz. Az elemzési beállítások listáját a read_files táblaértékű függvénycímű témakörben találja.

    /* Discover your data in a volume */
    LIST "/Volumes/<catalog>/<schema>/<volume>/<path>/<folder>"
    
    /* Preview your data in a volume */
    SELECT * FROM read_files("/Volumes/<catalog>/<schema>/<volume>/<path>/<folder>") LIMIT 10
    
    /* Discover your data in an external location */
    LIST "abfss://<container>@<storage-account>.dfs.core.windows.net/<path>/<folder>"
    
    /* Preview your data */
    SELECT * FROM read_files("abfss://<container>@<storage-account>.dfs.core.windows.net/<path>/<folder>") LIMIT 10
    

Adatok betöltése streamelési táblába

Ha streamelési táblát szeretne létrehozni a felhőobjektum-tárolóban lévő adatokból, illessze be a következőt a lekérdezésszerkesztőbe, majd kattintson a Futtatás gombra:

/* Load data from a volume */
CREATE OR REFRESH STREAMING TABLE <table-name> AS
SELECT * FROM STREAM read_files('/Volumes/<catalog>/<schema>/<volume>/<path>/<folder>')

/* Load data from an external location */
CREATE OR REFRESH STREAMING TABLE <table-name> AS
SELECT * FROM STREAM read_files('abfss://<container>@<storage-account>.dfs.core.windows.net/<path>/<folder>')

A futtatási csatorna beállítása

Az SQL-raktárak használatával létrehozott streamtáblák automatikusan frissülnek egy DLT-folyamattal. A DLT-folyamatok alapértelmezés szerint az current csatornában használják a futtatókörnyezetet. Tekintse meg a DLT kiadási jegyzeteket és a kiadásfrissítési folyamatot, hogy megtudja a kiadási folyamat részleteit.

A Databricks azt javasolja, hogy a current csatornát használja éles környezetben való munkavégzéshez. Az új funkciók először megjelennek a preview csatornán. Az új funkciók teszteléséhez beállíthat egy folyamatot az előzetes verziójú DLT-csatornára az preview táblatulajdonságként való megadásával. Ezt a tulajdonságot a tábla létrehozásakor vagy a tábla alter utasítással történő létrehozása után adhatja meg.

Az alábbi példakód bemutatja, hogyan állíthatja be a csatornát előzetes verzióra a CREATE utasításban:

CREATE OR REPLACE MATERIALIZED VIEW foo.default.bar
TBLPROPERTIES ('pipelines.channel' = 'preview') as
SELECT
  *
FROM
  range(5)

A streamelési táblát DLT-pipeline segítségével frissítse

Ez a szakasz a lekérdezésben meghatározott forrásokból elérhető legfrissebb adatokkal rendelkező streamelési táblák frissítésének mintáit ismerteti.

Amikor frissít egy streamelési táblát CREATE vagy REFRESH, a folyamat kiszolgáló nélküli DLT csővezetéket használ. Minden definiált streamelő tábla rendelkezik társított DLT-folyamatokkal.

A REFRESH parancs futtatása után a rendszer visszaadja a DLT-folyamat hivatkozását. A DLT-folyamat hivatkozásával ellenőrizheti a frissítés állapotát.

Feljegyzés

Csak a tábla tulajdonosa frissíthet streamelési táblázatot a legújabb adatok lekéréséhez. A táblát létrehozó felhasználó a tulajdonos, és a tulajdonos nem módosítható. Előfordulhat, hogy frissítenie kell a streamelési táblát, mielőtt időutazási lekérdezéseket használna.

Lásd Mi az a DLT?.

Csak új adatok betöltése

Alapértelmezés szerint a read_files függvény beolvassa a forráskönyvtárban lévő összes meglévő adatot a tábla létrehozásakor, majd az újonnan érkező rekordokat minden frissítéssel feldolgozza.

Ha el szeretné kerülni a forráskönyvtárban már meglévő adatok betöltését a tábla létrehozásakor, állítsa a includeExistingFiles beállítást falseértékre. Ez azt jelenti, hogy csak azokat az adatokat dolgozzák fel a mappában, amelyek a tábla létrehozása után érkeznek. Példa:

CREATE OR REFRESH STREAMING TABLE my_bronze_table
AS SELECT *
FROM STREAM read_files(
  'abfss://myContainer@myStorageAccount.dfs.core.windows.net/analysis/*/*/*.json',
  includeExistingFiles => false)

Streamelési tábla teljes frissítése

A teljes frissítések újra feldolgozzák a forrásban elérhető összes adatot a legújabb definícióval. Nem ajánlott teljes frissítéseket meghívni olyan forrásokon, amelyek nem őrzik meg az adatok teljes előzményeit, vagy rövid megőrzési időszakuk van (például Kafka), mert a teljes frissítés csonkolja a meglévő adatokat. Előfordulhat, hogy nem tudja helyreállítani a régi adatokat, ha az adatok már nem érhetők el a forrásban.

Példa:

REFRESH STREAMING TABLE my_bronze_table FULL

Streamelési tábla ütemezése automatikus frissítéshez

Ha egy streamelési táblát úgy szeretne konfigurálni, hogy egy megadott ütemezés alapján automatikusan frissüljön, illessze be az alábbiakat a lekérdezésszerkesztőbe, majd kattintson a Futtatás gombra:

ALTER STREAMING TABLE
[[<catalog>.]<database>.]<name>
ADD [SCHEDULE [REFRESH]
        CRON '<cron-string>'
                [ AT TIME ZONE '<timezone-id>' ]];

Például a frissítésütemezési lekérdezéseket lásd: ALTER STREAMING TABLE.

Frissítés állapotának nyomon követése

A streamelési tábla frissítésének állapotát megtekintheti a streamelési táblát a DLT felhasználói felületén kezelő folyamat megtekintésével, vagy a streamelési tábla DESCRIBE EXTENDED parancsa által visszaadott Frissítési adatok megtekintésével.

DESCRIBE EXTENDED <table-name>

Streambetöltés a Kafkából

A Kafkából történő streambetöltésre példa: read_kafka.

Hozzáférés biztosítása a felhasználóknak egy streamelési táblához

Ha meg szeretné adni a felhasználóknak a SELECT streamelési tábla jogosultságát, hogy lekérdezhessek, illessze be a következőt a lekérdezésszerkesztőbe, majd kattintson a Futtatás gombra:

GRANT SELECT ON TABLE <catalog>.<schema>.<table> TO <user-or-group>

A Unity Catalog biztonságos objektumaihoz való jogosultságok megadásáról további információt a Unity Catalog-jogosultságok és a biztonságos objektumok című témakörben talál.

Rekordok végleges törlése streamelési táblából

Fontos

A folyamatos táblázatokat tartalmazó REORG utasítás támogatása közösségi előnézetben van.

Megjegyzés

  • A REORG utasítás streamelési táblával való használatához a Databricks Runtime 15.4-et vagy újabb verzióját kell használni.
  • Bár a REORG utasítást bármilyen streamelési táblával használhatja, ez csak akkor szükséges, ha rekordokat töröl egy streamelési táblából, amelyben törlési vektorok engedélyezett. A parancsnak nincs hatása, ha olyan streamelési táblával használja, amelyen nincs engedélyezve törlési vektor.

Ha egy olyan streamelési tábla alapjául szolgáló tárolóból szeretne rekordokat fizikailag törölni, amelyeken engedélyezettek a törlési vektorok, például a GDPR-megfelelőség esetében, további lépéseket kell tenni annak biztosítása érdekében, hogy egy VACUUM művelet fusson a streamelőtábla adatain.

Az alábbiak részletesebben ismertetik ezeket a lépéseket:

  1. Rekordok frissítése vagy rekordok törlése a streamelési táblából.
  2. Futtasson egy REORG utasítást a stream táblán a APPLY (PURGE) paraméter megadásával. Például REORG TABLE <streaming-table-name> APPLY (PURGE);.
  3. Várjon, amíg a streamelési tábla adatmegőrzési ideje eltelik. Az alapértelmezett adatmegőrzési időszak hét nap, de konfigurálható a delta.deletedFileRetentionDuration táblatulajdonság használatával. Lásd: Adatmegőrzés konfigurálása időutazásos lekérdezésekhez.
  4. REFRESH a streamelési tábla. Lásd: Streamelési tábla frissítése DLT-folyamattal. A REFRESH művelet után 24 órán belül a rendszer automatikusan futtatja a DLT karbantartási feladatait, beleértve a rekordok végleges törléséhez szükséges VACUUM műveletet is. Lásd DLTáltal végzett karbantartási feladatokat.

A futtatások monitorozása a lekérdezési előzmények használatával

A lekérdezéselőzmények lapon hozzáférhet a lekérdezési adatokhoz és a lekérdezési profilokhoz, amelyek segítenek azonosítani a rosszul teljesítő lekérdezéseket és szűk keresztmetszeteket a streamelési tábla frissítéseinek futtatásához használt DLT-folyamatban. A lekérdezési előzményekben és a lekérdezési profilokban elérhető információk típusának áttekintéséhez tekintse meg a lekérdezési előzményeket és a lekérdezési profilt.

Fontos

Ez a funkció a nyilvános előzetes verzióban érhető el. A munkaterület rendszergazdái az Előnézetek lapon engedélyezhetik ezt a funkciót. Lásd: Az Azure Databricks előzetes verzióinak kezelése.

Az adatok streamelésére vonatkozó összes utasítás megjelenik a lekérdezési előzményekben. Az Utasítás legördülő szűrővel kiválaszthatja bármelyik parancsot, és megvizsgálhatja a kapcsolódó lekérdezéseket. Minden CREATE utasítást egy REFRESH utasítás követ, amely aszinkron módon hajt végre egy DLT-folyamaton. Az REFRESH utasítások általában részletes lekérdezési terveket tartalmaznak, amelyek betekintést nyújtanak a teljesítmény optimalizálásába.

A lekérdezéselőzmények felhasználói felületén található utasítások eléréséhez REFRESH kövesse az alábbi lépéseket:

  1. A lekérdezéselőzmények felhasználói felületének megnyitásához kattintson Előzmények ikon a bal oldali oldalsávra.
  2. Jelölje be a REFRESH jelölőnégyzetet a Állítás legördülő szűrőből.
  3. A lekérdezési utasítás nevére kattintva megtekintheti az összesítő adatokat, például a lekérdezés időtartamát és az összesített metrikákat.
  4. Kattintson a Lekérdezésprofil megtekintése elemre a lekérdezésprofil megnyitásához. A lekérdezésprofil navigálásával kapcsolatos részletekért tekintse meg a lekérdezésprofilt .
  5. Ha szeretné, a Lekérdezés forrása szakaszban található hivatkozásokkal megnyithatja a kapcsolódó lekérdezést vagy folyamatot.

A lekérdezés részleteit az SQL-szerkesztő hivatkozásai vagy egy SQL-raktárhoz csatolt jegyzetfüzet segítségével is elérheti.

További erőforrások