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 katalogu Unity s dodatečnou podporou streamování nebo přírůstkového zpracování dat. Kanál Delta Live Tables se automaticky vytvoří pro každou streamovací 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 použití streamovaných tabulek k načtení dat z cloudového úložiště objektů nakonfigurovaného jako svazek katalogu Unity (doporučeno) nebo externí umístění.
Poznámka:
Informace o tom, jak používat tabulky Delta Lake jako zdroje streamování a jímky, najdete v tématu o čtení a zápisech streamovaných tabulek Delta.
Než začnete
Než začnete, musíte splnit následující požadavky.
Požadavky na pracovní prostor:
- Účet Azure Databricks s povoleným bezserverovým účtem. Další informace najdete v tématu Povolení bezserverových skladů SQL.
- Pracovní prostor s povoleným katalogem Unity Další informace najdete v tématu Nastavení a správa katalogu Unity.
Požadavky na výpočetní prostředky:
Musíte použít jednu z následujících možností:
SQL Warehouse, který používá
Current
kanál.Výpočty s režimem sdíleného přístupu v Databricks Runtime 13.3 LTS nebo vyšší
Výpočty s režimem přístupu jednoho uživatele v Databricks Runtime 15.4 LTS nebo vyšší.
V Databricks Runtime 15.3 a níže nemůžete použít výpočetní prostředky jednoho uživatele k dotazování streamovaných tabulek, které vlastní jiní uživatelé. Výpočetní prostředky s jedním uživatelem můžete použít ve službě Databricks Runtime 15.3 a níže pouze v případě, že vlastníte streamovací tabulku. Tvůrce tabulky je vlastník.
Databricks Runtime 15.4 LTS a vyšší podporují dotazy na tabulky generované systémem Delta Live Tables na výpočetních prostředcích jednoho uživatele bez ohledu na vlastnictví tabulky. Pokud chcete využít filtrování dat poskytované v Databricks Runtime 15.4 LTS a vyšší, musíte ověřit, že je váš pracovní prostor povolený pro bezserverové výpočetní prostředky, protože funkce filtrování dat, která podporuje tabulky generované delta živými tabulkami, běží na bezserverových výpočetních prostředcích . Za výpočetní prostředky bez serveru se můžou účtovat poplatky, když ke spouštění operací filtrování dat použijete výpočetní prostředky s jedním uživatelem. Podívejte se na podrobné řízení přístupu u 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í 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 tabulku streamování. - Oprávnění
USE SCHEMA
ke schématu, ve kterém vytvoříte tabulku streamování. - Oprávnění
CREATE TABLE
ke schématu, ve kterém vytvoříte tabulku streamování.
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á
Current
kanál z rozevíracího seznamu.Do editoru vložte následující hodnoty do úhlových závorek (
<>
) pro informace identifikující zdrojová data a klikněte na spustit.Poznámka:
Chyby odvozování schématu se můžou vyskytnout při spuštění
read_files
funkce s hodnotou tabulky, 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 najdete v tématu read_files funkce 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>')
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ž vy CREATE
nebo REFRESH
streamovaná tabulka, aktualizace zpracovává pomocí bezserverového kanálu Delta Live Tables. Každá tabulka streamování, kterou definujete, má přidružený kanál Delta Live Tables.
Po spuštění REFRESH
příkazu se vrátí odkaz kanálu DLT. Ke kontrole stavu aktualizace můžete použít odkaz na kanál DLT.
Poznámka:
Nejnovější data může získat pouze vlastník tabulky, který aktualizuje streamovací tabulku. Uživatel, který vytvoří tabulku, je vlastníkem a vlastníka nelze změnit. Před použitím dotazů na časovou cestu možná budete muset aktualizovat streamovací tabulku.
Podívejte se, co jsou dynamické tabulky Delta?
Ingestovat pouze nová data
Ve výchozím nastavení read_files
funkce č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í.
Pokud se chcete vyhnout ingestování dat, která již ve zdrojovém adresáři v době vytváření tabulky existují, nastavte includeExistingFiles
možnost na false
hodnotu . To znamená, že po vytvoření tabulky se do adresáře přijdou jenom data, která dorazí do adresáře. 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é aktualizace streamované 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í položky 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 zobrazit zobrazením kanálu, který spravuje tabulku streamování v uživatelském rozhraní delta živých tabulek, nebo zobrazením informací o aktualizaci vrácených příkazem DESCRIBE EXTENDED
pro tabulku streamování.
DESCRIBE EXTENDED <table-name>
Příjem streamovaných dat ze systému Kafka
Příklad příjmu dat streamování ze systému Kafka najdete v tématu read_kafka.
Udělení přístupu uživatelům ke streamovací tabulce
Pokud chcete uživatelům SELECT
udělit oprávnění ke streamované tabulce, 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 katalogu Unity najdete v tématu Oprávnění katalogu Unity a zabezpečitelné objekty.