Načtení dat pomocí streamovaných tabulek v Databricks SQL

Důležité

Tato funkce je ve verzi Public Preview.

Databricks doporučuje používat streamované tabulky k příjmu dat pomocí Databricks SQL. Streamovací tabulka je spravovaná tabulka katalogu Unity s dodatečnou podporou streamování nebo přírůstkového zpracování dat. Kanál DLT 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, ujistěte se, že máte následující:

  • Úč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.

  • SQL Warehouse, který používá Current kanál.

  • Pokud chcete dotazovat streamované tabulky vytvořené kanálem Delta Live Tables, musíte použít sdílený výpočetní výkon pomocí Databricks Runtime 13.3 LTS a vyšší nebo SQL Warehouse. Streamované tabulky vytvořené v kanálu s povoleným katalogem Unity nelze dotazovat z přiřazených nebo žádných clusterů izolace.

  • 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í.

  • 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á Current kanál z rozevíracího seznamu.

  3. 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.

CREATE operace pro streamované tabulky používají k počátečnímu vytvoření a načítání dat do streamované tabulky službu Databricks SQL Warehouse. REFRESH operace pro streamované tabulky používají rozdílové živé tabulky (DLT). Kanál DLT se automaticky vytvoří pro každou streamovací tabulku. Při aktualizaci streamovací tabulky se zahájí aktualizace kanálu DLT, aby se aktualizace zpracovala.

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.

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 falsehodnotu . 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.

Omezení

  • Tabulky streamování SQL Databricks nejsou podporovány v oblastech USA – středojiž a USA – západ 2.

Další materiály