Sdílet prostřednictvím


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:

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í:

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

  1. Na bočním panelu pracovního prostoru klikněte na Dotazy a potom klikněte na Vytvořit dotaz.

  2. V editoru dotazů vyberte sql warehouse, který používá kanál Current z rozevíracího seznamu.

  3. 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 viz read_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:

  1. Aktualizujte záznamy nebo odstraňte záznamy z tabulky streamování.
  2. Spusťte příkaz REORG pro tabulku streamování a zadejte parametr APPLY (PURGE). Například REORG TABLE <streaming-table-name> APPLY (PURGE);.
  3. 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.
  4. REFRESH streamovací tabulka. Viz Aktualizace streamovací tabulky pomocí kanálu DLT. Do 24 hodin od operace REFRESH se automaticky spustí úlohy údržby DLT, včetně operace VACUUM, 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ě:

  1. Kliknutím Ikona historie na levý boční panel otevřete uživatelské rozhraní historie dotazů.
  2. Z rozbalovacího filtru Výkaz zaškrtněte políčko REFRESH.
  3. Kliknutím na název příkazu dotazu zobrazíte souhrnné podrobnosti, jako je doba trvání dotazu a agregované metriky.
  4. Kliknutím na Zobrazit profil dotazu otevřete profil dotazu. Podrobnosti o navigaci v profilu dotazu najdete v části Profil dotazu.
  5. 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