Adatok betöltése streamelő táblák használatával a Databricks SQL-ben
Fontos
Ez a funkció a nyilvános előzetes verzióban érhető el. A hozzáférésre való regisztrációhoz töltse ki ezt az űrlapot.
A Databricks azt javasolja, hogy streamelési táblák használatával betöltse az adatokat a Databricks SQL használatával. A streamelési tábla egy Unity Catalog által felügyelt 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, hogy streamelési táblák használatával tölthetők be adatok a Unity Catalog-kötetként (ajánlott) vagy külső helyként konfigurált felhőobjektum-tárolóból.
Feljegyzé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.
Előkészületek
Mielőtt hozzákezdene, győződjön meg arról, hogy rendelkezik az alábbiakval:
Egy Azure Databricks-fiók kiszolgáló nélküli engedélyezve. 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.
A csatornát
Current
használó SQL-raktár.A Delta Live Tables-folyamat által létrehozott streamtáblák lekérdezéséhez a Databricks Runtime 13.3 LTS és újabb verziók vagy SQL-raktárak használatával közös számítást kell használnia. A Unity Catalog-kompatibilis folyamatban létrehozott streamtáblák nem kérdezhetők le hozzárendelt vagy nem elkülönített fürtökről.
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.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áért lásd read_files táblaértékű függvényt./* 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>')
Streamelési tábla frissítése DLT-folyamattal
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.
CREATE
a streamelési táblák műveletei egy Databricks SQL-raktárt használnak az adatok kezdeti létrehozásához és a streamelési táblába való betöltéséhez. REFRESH
a streamelési táblákhoz a Delta Live Tables (DLT) használható. A rendszer automatikusan létrehoz egy DLT-folyamatot az egyes streamelési táblákhoz. Egy streamelési tábla frissítésekor a DLT-folyamat frissítése indul el a frissítés feldolgozásához.
A parancs futtatása után a REFRESH
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ó.
Lásd : Mi az a Delta Live Tables?.
Csak új adatok betöltése
Alapértelmezés szerint a függvény beolvassa read_files
a forráskönyvtárban lévő összes meglévő adatot a tábla létrehozásakor, majd minden frissítéssel feldolgozza az újonnan érkező rekordokat.
Ha szeretné elkerülni, hogy a tábla létrehozásakor a forráskönyvtárban már létező adatok legyenek betöltve, állítsa a beállítást a includeExistingFiles
következőre false
: . Ez azt jelenti, hogy csak azok az adatok érkeznek a könyvtárba, 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 kezelő folyamat megtekintésével a Delta Live Tables felhasználói felületén, vagy a streamelési tábla parancsa által DESCRIBE EXTENDED
visszaadott frissítési információk 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.
Korlátozások
- A Databricks SQL-streamtáblák nem támogatottak az USA déli középső régiójában és az USA 2. nyugati régiójában.