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

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

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

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

Další materiály