Načtení dat pomocí streamovaných tabulek v Databricks SQL
Databricks doporučuje používat streamované tabulky k příjmu dat pomocí Databricks SQL. streamovací tabulka je tabulka zaregistrovaná v Unity Catalog s dodatečnou podporou pro streamování nebo přírůstkové zpracování dat. Potrubí DLT se automaticky vytvoří pro každou streamingovou tabulku. Streamované tabulky můžete použít k přírůstkové načítání dat ze systému Kafka a cloudového úložiště objektů.
Tento článek ukazuje, jak používat streamované tabulky k načtení dat z cloudového úložiště objektů nakonfigurovaného jako jednotka Unity Catalog (doporučeno) nebo externí místo.
Poznámka:
Informace o tom, jak používat tabulky Delta Lake jako zdroj a cíl streamování, najdete v sekci Streamované čtení a zápisy tabulek Delta.
Důležité
Streamované tabulky vytvořené v Databricks SQL jsou podporovány bezserverovým kanálem DLT. Aby se tato funkce používala, musí váš pracovní prostor podporovat bezserverové kanály.
Než začnete
Než začnete, musíte splnit následující požadavky.
Požadavky na pracovní prostor:
- Účet Azure Databricks s povolenou bezserverovou funkcí. Další informace naleznete v tématu Povolení bezserverových SQL skladů.
- Pracovní prostor s aktivovaným katalogem Unity. Další informace najdete v tématu Nastavení a správakatalogu Unity .
Požadavky na výpočetní prostředky:
Musíte použít jednu z následujících možností:
- Databázový sklad SQL, který používá kanál
Current
. - Výpočty se standardním režimem přístupu (dříve sdíleným režimem přístupu) ve službě Databricks Runtime 13.3 LTS nebo vyšší.
Výpočty s vyhrazeným režimem přístupu (dříve režim přístupu jednoho uživatele) v Databricks Runtime 15.4 LTS nebo novějším.
V Databricks Runtime 15.3 a níže nemůžete použít vyhrazené výpočetní prostředky k dotazování streamovaných tabulek, které vlastní jiných uživatelů. Vyhrazený výpočetní výkon můžete použít na Databricks Runtime verze 15.3 a starší pouze tehdy, pokud vlastníte streamingovou tabulku. Tvůrce tabulky je vlastníkem.
Databricks Runtime 15.4 LTS a vyšší podporují dotazy na tabulky generované knihovnou DLT na vyhrazené výpočetní prostředky bez ohledu na vlastnictví tabulky. Pokud chcete využít filtrování dat poskytované ve službě Databricks Runtime 15.4 LTS a novější, musíte ověřit, že je váš pracovní prostor povolený pro bezserverové výpočetní, protože funkce filtrování dat, která podporuje tabulky generované knihovnou DLT, běží na bezserverovém výpočetním prostředí. Za bezserverové výpočetní prostředky se můžou účtovat poplatky, když k provádění operací filtrování dat použijete vyhrazené výpočetní prostředky. Viz jemně odstupňované řízení přístupu u vyhrazených výpočetních prostředků (dříve výpočetních prostředků jednoho uživatele).
Požadavky na oprávnění:
- Oprávnění
READ FILES
k externímu umístění v katalogu Unity. Informace najdete v tématu Vytvoření externího umístění pro připojení cloudového úložiště k Azure Databricks. - Oprávnění
USE CATALOG
v katalogu, ve kterém vytvoříte streamovací tabulku. - Oprávnění
USE SCHEMA
pro schéma, ve kterém vytvoříte streamovací tabulku. - Oprávnění
CREATE TABLE
na schéma, ve kterém vytvoříte streamovací tabulku.
Další požadavky:
Cesta ke zdrojovým datům.
Příklad cesty svazku:
/Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>
Příklad cesty k externímu umístění:
abfss://myContainer@myStorageAccount.dfs.core.windows.net/analysis
Poznámka:
Tento článek předpokládá, že data, která chcete načíst, jsou v cloudovém úložišti, které odpovídá svazku katalogu Unity nebo externímu umístění, ke kterému máte přístup.
Zjišťování a náhled zdrojových dat
Na bočním panelu pracovního prostoru klikněte na Dotazy a potom klikněte na Vytvořit dotaz.
V editoru dotazů vyberte sql warehouse, který používá kanál
Current
z rozevíracího seznamu.Do editoru vložte následující text, nahraďte hodnoty v úhlových závorkách (
<>
) informacemi identifikujícími vaše zdrojová data, a poté klikněte na Spustit.Poznámka:
Při spuštění funkce s hodnotou tabulky
read_files
může dojít k chybám odvozování schématu, pokud výchozí hodnoty pro funkci nemůžou analyzovat vaše data. Můžete například potřebovat nakonfigurovat víceřádkový režim pro soubory CSV nebo JSON s více řádky. Seznam možností analyzátoru vizread_files
funkci s hodnotou tabulky./* 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
Načtení dat do streamované tabulky
Pokud chcete vytvořit streamovací tabulku z dat v cloudovém úložišti objektů, vložte do editoru dotazů následující příkaz a klikněte na Spustit:
/* 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>')
Nastavení běhového kanálu
Streamované tabulky vytvořené pomocí SQL Warehouse se automaticky aktualizují pomocí kanálu DLT. Kanály DLT ve výchozím nastavení používají modul runtime v kanálu current
. Informace o procesu vydání najdete v poznámkách k verzi DLT a procesu aktualizace.
Databricks doporučuje používat current
kanál pro produkční úlohy. Nové funkce jsou poprvé vydány v preview
kanálu. Na kanál DLT ve verzi Preview můžete nastavit potrubí a otestovat nové funkce zadáním preview
jako vlastnosti tabulky. Tuto vlastnost můžete zadat při vytváření tabulky nebo po vytvoření tabulky pomocí příkazu ALTER.
Následující příklad kódu ukazuje, jak nastavit kanál na náhled v příkazu CREATE:
CREATE OR REPLACE MATERIALIZED VIEW foo.default.bar
TBLPROPERTIES ('pipelines.channel' = 'preview') as
SELECT
*
FROM
range(5)
aktualizace streamované tabulky pomocí kanálu DLT
Tato část popisuje vzory aktualizace streamované tabulky s nejnovějšími daty dostupnými ze zdrojů definovaných v dotazu.
Když CREATE
nebo REFRESH
streamovací tabulku, proces aktualizace zpracuje pomocí bezserverového kanálu DLT. Každá tabulka streamování, kterou definujete, má přidružený kanál DLT.
Po spuštění příkazu REFRESH
se vrátí odkaz na pipeline DLT. Ke kontrole stavu aktualizace můžete použít odkaz na kanál DLT.
Poznámka:
Pouze vlastník tabulky může obnovit streamovací tabulku, aby získal nejnovější data. Uživatel, který vytvoří tabulku, je vlastníkem a vlastníka nelze změnit. Možná budete muset aktualizovat svou streamovací tabulku před použitím dotazů na cestování časem .
Podívejte se na Co je to DLT?.
Přijímat pouze nová data
Ve výchozím nastavení funkce read_files
čte všechna existující data ve zdrojovém adresáři během vytváření tabulky a pak zpracovává nově přicházející záznamy s každou aktualizací.
Chcete-li zabránit ingestování dat, která již existují ve zdrojovém adresáři při vytváření tabulky, nastavte includeExistingFiles
možnost false
. To znamená, že se zpracovávají pouze data, která dorazí do adresáře po vytvoření tabulky. Příklad:
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)
Úplné obnovení streamovací tabulky
Úplné aktualizace znovu zpracovávají všechna data dostupná ve zdroji s nejnovější definicí. Nedoporučuje se volat úplné aktualizace zdrojů, které neuchovávají celou historii dat nebo mají krátkou dobu uchovávání, například Kafka, protože úplná aktualizace zkracuje stávající data. Pokud už data nejsou ve zdroji dostupná, možná nebudete moct obnovit stará data.
Příklad:
REFRESH STREAMING TABLE my_bronze_table FULL
Naplánování tabulky streamování pro automatickou aktualizaci
Pokud chcete nakonfigurovat tabulku streamování tak, aby se automaticky aktualizovala podle definovaného plánu, vložte do editoru dotazů následující příkaz a klikněte na Spustit:
ALTER STREAMING TABLE
[[<catalog>.]<database>.]<name>
ADD [SCHEDULE [REFRESH]
CRON '<cron-string>'
[ AT TIME ZONE '<timezone-id>' ]];
Například dotazy plánu aktualizace najdete v tématu ALTER STREAMING TABLE.
Sledování stavu aktualizace
Stav aktualizace streamované tabulky můžete zjistit zobrazením kanálu, který ji spravuje v uživatelském rozhraní DLT, nebo zobrazením informací o aktualizaci, které vrací příkaz DESCRIBE EXTENDED
pro streamovanou tabulku.
DESCRIBE EXTENDED <table-name>
Příjem streamovaných dat ze systému Kafka
Příklad příjmu dat ze systému Kafka najdete v read_kafka.
Udělení přístupu uživatelům ke streamovací tabulce
Pokud chcete uživatelům udělit oprávnění SELECT
u tabulky streamování, aby se na ni mohli dotazovat, vložte do editoru dotazů následující příkaz a klikněte na Spustit:
GRANT SELECT ON TABLE <catalog>.<schema>.<table> TO <user-or-group>
Další informace o udělení oprávnění k zabezpečitelným objektům v katalogu Unity naleznete v tématu Oprávnění katalogu Unity a zabezpečitelné objekty.
trvalé odstranění záznamů z tabulky streamování
Důležité
Podpora příkazu REORG
s tabulkami streamování je ve verzi Public Preview.
Poznámka:
- Použití příkazu
REORG
se streamovací tabulkou vyžaduje Databricks Runtime 15.4 a vyšší. - I když můžete použít příkaz
REORG
s libovolnou tabulkou streamování, je vyžadován pouze při odstraňování záznamů z tabulky streamování s vektory odstranění povolené. Příkaz nemá žádný vliv při použití se streamovanou tabulkou bez povolených vektorů odstranění.
Pokud chcete fyzicky odstranit záznamy z podkladového úložiště pro streamovanou tabulku s povolenými vektory odstranění, jako je například dodržování gdpr, je potřeba provést další kroky, které zajistí, aby se operace VACUUM spouštěla na datech streamované tabulky.
Následující text podrobněji popisuje tyto kroky:
- Aktualizujte záznamy nebo odstraňte záznamy z tabulky streamování.
- Spusťte příkaz
REORG
pro tabulku streamování a zadejte parametrAPPLY (PURGE)
. NapříkladREORG TABLE <streaming-table-name> APPLY (PURGE);
. - Počkejte, až uplyne doba uchovávání dat streamované tabulky. Výchozí doba uchovávání dat je sedm dní, ale je možné ji nakonfigurovat pomocí vlastnosti
delta.deletedFileRetentionDuration
tabulky. Vizte Konfigurace uchovávání dat pro dotazy s časovým cestováním. -
REFRESH
streamovací tabulka. Viz Aktualizace streamovací tabulky pomocí kanálu DLT. Do 24 hodin od operaceREFRESH
se automaticky spustí úlohy údržby DLT, včetně operaceVACUUM
, která se vyžaduje k trvalému odstranění záznamů. Vizte Úlohy údržby prováděné DLT.
Monitorování spuštění pomocí historie dotazů
Na stránce historie dotazů můžete získat přístup k podrobnostem dotazu a profilům dotazů, které vám pomůžou identifikovat špatně výkonné dotazy a kritické body v kanálu DLT používaném ke spouštění aktualizací streamovaných tabulek. Přehled o druhu informací dostupných v historii dotazů a profilech dotazů najdete v tématu Historie dotazů a profil dotazu.
Důležité
Tato funkce je ve verzi Public Preview. Správci pracovního prostoru můžou tuto funkci povolit na stránce Previews . Viz Správa Azure Databricks Previewy.
Všechny příkazy související se streamovanými tabulkami se zobrazí v historii dotazů. Pomocí rozevíracího seznamu příkaz můžete vybrat libovolný příkaz a zkontrolovat související dotazy. Za všemi příkazy CREATE
následuje příkaz REFRESH
, který se provádí asynchronně v kanálu DLT. Příkazy REFRESH
obvykle zahrnují podrobné plány dotazů, které poskytují přehled o optimalizaci výkonu.
Pokud chcete získat přístup k REFRESH
příkazům v uživatelském rozhraní historie dotazů, postupujte následovně:
- Kliknutím
na levý boční panel otevřete uživatelské rozhraní historie dotazů.
- Z rozbalovacího filtru Výkaz zaškrtněte políčko REFRESH.
- Kliknutím na název příkazu dotazu zobrazíte souhrnné podrobnosti, jako je doba trvání dotazu a agregované metriky.
- Kliknutím na Zobrazit profil dotazu otevřete profil dotazu. Podrobnosti o navigaci v profilu dotazu najdete v části Profil dotazu.
- Volitelně můžete pomocí odkazů v části Zdroj dotazů otevřít související dotaz nebo kanál.
K podrobnostem dotazu můžete přistupovat také pomocí odkazů v editoru SQL nebo z poznámkového bloku připojeného k SQL Warehouse.
Další materiály
- tabulka streamování
-
read_files
tabulkově hodnotová funkce - CREATE STREAMING TABLE
- ALTER STREAMING TABLE
-
read_kafka
tabulkově hodnotová funkce