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
A munkaterület oldalsávjában kattintson a Lekérdezések elemre, majd a Lekérdezés létrehozása parancsra.
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.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 aread_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:
- Rekordok frissítése vagy rekordok törlése a streamelési táblából.
- Futtasson egy
REORG
utasítást a stream táblán aAPPLY (PURGE)
paraméter megadásával. PéldáulREORG TABLE <streaming-table-name> APPLY (PURGE);
. - 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. -
REFRESH
a streamelési tábla. Lásd: Streamelési tábla frissítése DLT-folyamattal. AREFRESH
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égesVACUUM
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:
- A lekérdezéselőzmények felhasználói felületének megnyitásához kattintson
a bal oldali oldalsávra.
- Jelölje be a REFRESH jelölőnégyzetet a Állítás legördülő szűrőből.
- 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.
- 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 .
- 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.