Načtení dat pomocí streamování tables v Databricks SQL
Databricks doporučuje používat streaming tables k příjmu dat pomocí Databricks SQL. streamovací table je table zaregistrovaná v Unity Catalog s dodatečnou podporou streamování nebo přírůstkového zpracování dat. Potrubí Delta Live Tables se automaticky vytvoří pro každý streaming table. Streamovací tables můžete použít pro přírůstkové načítání dat z Kafka a cloudového úložiště objektů.
Tento článek ukazuje použití streamingu tables k načtení dat z cloudového úložiště objektů, které je nakonfigurováno jako svazek Unity Catalog (doporučeno) nebo z externího umístění.
Poznámka:
Informace o tom, jak používat Delta Lake tables jako zdroje streamování a jímky, najdete v tématu Delta table čtení a zápisy streamování.
Důležité
Streamy tables vytvořené v Databricks SQL jsou zajišťovány bezserverovým kanálem Delta Live Tables. 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 povoleným bezserverovým účtem. Další informace najdete v tématu Povolení bezserverových skladů SQL.
- Pracovní prostor s povolenou Unity Catalog. Pro více informací si přečtěte Set o správě a zpracování CatalogUnity.
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 starších verzích nemůžete použít výpočetní prostředky pro jednoho uživatele k dotazování streamování tables, které vlastní jiní uživatelé. Jednouživatelský výpočet můžete použít na Databricks Runtime verze 15.3 a nižší pouze v případě, že vlastníte streamovací table. Tvůrce table je jeho vlastníkem.
Databricks Runtime 15.4 LTS a novější podporuje operace na Delta Live Tables– generované tables na výpočetních prostředcích jediného uživatele a to bez ohledu na vlastnictví table. Pokud chcete využít filtrování dat poskytované ve službě Databricks Runtime 15.4 LTS a novější, musíte ověřit, že váš pracovní prostor je povolený pro bezserverové výpočetní, protože funkce filtrování dat, které podporují funkci delta live Tables-generated tables běží na bezserverovém výpočetním prostředí. 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
na externí umístění Unity Catalog. 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
pro catalog, ve kterém vytvoříte streamovací table. - Oprávnění
USE SCHEMA
pro schema, ve kterém vytvoříte streamovací table. - Oprávnění
CREATE TABLE
pro schema, ve kterém vytvoříte streamovací table.
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 Unity Catalog 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ů select SQL Warehouse, který používá kanál
Current
z rozevíracího list.Do editoru vložte následující text, nahraďte values v úhlových závorkách (
<>
) informacemi, které identifikují vaše zdrojová data, a pak klikněte na Spustit.Poznámka:
Při spuštění funkce s hodnotami
read_files
table můžete narazit na chyby schema při inferenci, pokud výchozí nastavení funkce nedokáže zpracovat vaše data. Můžete například potřebovat nakonfigurovat víceřádkový režim pro soubory CSV nebo JSON s více řádky. list možností analyzátoru najdete v části read_files tablefunkce s hodnotami./* 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 streamu table
Pokud chcete vytvořit streamování table z dat v cloudovém úložišti objektů, vložte následující do editoru 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>')
Set kanálu modulu runtime
Streamované tables vytvořené pomocí SQL Warehouse se automaticky aktualizují pomocí kanálu Delta Live Tables. Kanály Delta Live Tables ve výchozím nastavení používají modul runtime v kanálu current
. Podívejte se na Delta Live Tables poznámky k vydání a proces upgradu, abyste se seznámili s procesem vydání.
Databricks doporučuje používat current
kanál pro produkční úlohy. Nové funkce jsou poprvé vydány v preview
kanálu. Můžete set kanál Delta Live Tables do testovací verze a otestovat nové funkce tak, že zadáte preview
jako vlastnost table. Tuto vlastnost můžete zadat při vytváření table nebo po vytvoření table pomocí příkazu ALTER.
Následující příklad kódu ukazuje, jak set kanálu zobrazit náhled v příkazu CREATE:
CREATE OR REPLACE MATERIALIZED VIEW foo.default.bar
TBLPROPERTIES ('pipelines.channel' = 'preview') as
SELECT
*
FROM
range(5)
Refresh streamované table pomocí kanálu DLT
Tato část popisuje schémata aktualizace streamovaného table s nejnovějšími daty, která jsou k dispozici ze zdrojů definovaných v dotazu.
Při CREATE
nebo REFRESH
streamované tablese procesy update pomocí bezserverového potrubí Delta Live Tables. Každý streamovací table, který definujete, má přidružené potrubí Delta Live Tables.
Po spuštění příkazu REFRESH
se vrátí odkaz na pipeline DLT. Pomocí odkazu na kanál DLT můžete zkontrolovat stav refresh.
Poznámka:
Pouze vlastník table může refresh streamované table k dosažení nejnovějších dat get. Uživatel, který vytvoří table, je vlastníkem a vlastníka nelze změnit. Možná budete muset refresh své streamování table před použitím časových dotazů .
Podívejte se na Co je Delta LiveTables?.
Ingestovat pouze nová data
Ve výchozím nastavení funkce read_files
čte všechna existující data ve zdrojovém adresáři při vytvoření table a pak zpracovává nově přicházející záznamy při každém refresh.
Pokud se chcete vyhnout ingestování dat, která již existují ve zdrojovém adresáři při vytváření table, set možnost includeExistingFiles
false
. To znamená, že se po vytvoření table zpracují 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ě streamované refreshtable
Úplné aktualizace znovu zpracovávají všechna data dostupná ve zdroji s nejnovější definicí. Nedoporučuje se volat úplné aktualizace zdrojů, které nezachovají celou historii dat nebo mají krátká období uchovávání, například Kafka, protože úplná refresh 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ánovat streamování table pro automatické refresh
Chcete-li nakonfigurovat streamovací table tak, aby bylo automaticky refresh podle definovaného plánu, vložte následující text do editoru dotazů a klikněte na Spustit:
ALTER STREAMING TABLE
[[<catalog>.]<database>.]<name>
ADD [SCHEDULE [REFRESH]
CRON '<cron-string>'
[ AT TIME ZONE '<timezone-id>' ]];
Například pro dotazy na plán refresh viz ALTER STREAMING TABLE.
Sledujte stav refresh
Stav streamovaného
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.
Grant uživatelé mají přístup k streamovacímu table
Pokud chcete grant uživatelům oprávnění SELECT
pro streamované table, aby se na něj mohli dotazovat, vložte do editoru dotazů následující příkaz a potom klikněte na Spustit:
GRANT SELECT ON TABLE <catalog>.<schema>.<table> TO <user-or-group>
Další informace o udělování oprávnění k zabezpečitelným objektům Unity Catalog naleznete v tématu Unity Catalog oprávnění a zabezpečitelné objekty.
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 pomohou identifikovat dotazy s nízkým výkonem a úzká místa v kanálu Delta Live Tables používaném k provádění streamovaných table aktualizací. 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 Preview.
Všechny příkazy související se streamováním tables se zobrazí v historii dotazů. Pomocí rozevíracího filtru Prohlášení můžete použít select jakýkoli příkaz a zkontrolovat související dotazy. Za všemi příkazy CREATE
následuje příkaz REFRESH
, který se spouští asynchronně v kanálu Delta Live Tables. 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ů.
- Select zaškrtávací políčko REFRESH z rozevíracího filtru Příkaz.
- 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.
Poznámka:
Vaše streamování