Sdílet prostřednictvím


Azure Stream Analytics: Zápis do tabulky Delta Lake

Delta Lake je otevřený formát, který do datových jezer přináší spolehlivost, kvalitu a výkon. Azure Stream Analytics můžete použít k přímému zápisu streamovaných dat do tabulek Delta Lake, aniž byste museli psát jeden řádek kódu.

Úlohu Stream Analytics je možné nakonfigurovat pro zápis prostřednictvím nativního výstupního konektoru Delta Lake, a to buď do nové, nebo předem připravené tabulky Delta v účtu Azure Data Lake Storage Gen2. Tento konektor je optimalizovaný pro vysokorychlostní příjem dat do tabulek Delta v režimu připojení. Poskytuje také sémantiku přesně jednou, což zaručuje, že se žádná data neztratí nebo duplikují. Ingestování datových proudů v reálném čase ze služby Azure Event Hubs do tabulek Delta umožňuje provádět ad hoc interaktivní nebo dávkové analýzy.

Konfigurace Delta Lake

Pokud chcete zapisovat data v Delta Lake, musíte se připojit k účtu Data Lake Storage Gen2. Následující tabulka uvádí vlastnosti související s konfigurací Delta Lake.

Název vlastnosti Popis
Formát serializace události Formát serializace pro výstupní data. Podporují se JSON, CSV, Avro a Parquet. Delta Lake je tady uvedená jako možnost. Data jsou ve formátu Parquet, pokud je vybrána možnost Delta Lake.
Název cesty Delta Cesta, která se používá k zápisu tabulky Delta Lake v zadaném kontejneru. Obsahuje název tabulky. Další informace najdete v další části.
Sloupec oddílu Nepovinné. Název {field} z výstupních dat do oddílu. Podporuje se pouze jeden sloupec oddílu. Hodnota sloupce musí být typu string .

Úplný seznam konfigurace Data Lake Storage Gen2 najdete v přehledu Azure Data Lake Storage Gen2.

Název cesty Delta

Název cesty Delta slouží k určení umístění a názvu tabulky Delta Lake uložené v Data Lake Storage Gen2.

K definování cesty k tabulce Delta a názvu tabulky Delta můžete použít jeden nebo více segmentů cesty. Segment cesty je řetězec mezi po sobě jdoucími znaky oddělovače (například lomítko /), který odpovídá názvu virtuálního adresáře.

Název segmentu je alfanumerický a může obsahovat mezery, pomlčky a podtržítka. Poslední segment cesty se používá jako název tabulky.

Omezení názvu cesty Delta zahrnují:

  • V názvech polí se nerozlišuje malá a velká písmena. Služba například nemůže rozlišovat mezi sloupcem ID a id.
  • Není povolen žádný dynamický {field} název. {ID} Například se považuje za text {ID}.
  • Počet segmentů cesty, které tvoří název, nesmí překročit 254.

Příklady

Příklady názvu cesty Delta:

  • Příklad 1: WestUS/CA/factory1/device-table
  • Příklad 2: Test/demo
  • Příklad 3: mytable

Ukázkové výstupní soubory:

  1. Ve zvoleném kontejneru je WestEurope/CA/factory1 cesta k adresáři a název složky tabulky Delta je tabulka zařízení.
  2. Ve zvoleném kontejneru je Test cesta k adresáři a název složky tabulky Delta je ukázka.
  3. Ve zvoleném kontejneru je název složky tabulky Delta mytable.

Vytvoření nové tabulky

Pokud ještě není tabulka Delta Lake se stejným názvem a v umístění určeném názvem cesty Delta ve výchozím nastavení vytvoří Stream Analytics novou tabulku Delta. Tato nová tabulka se vytvoří s následující konfigurací:

Zápis do tabulky

Pokud tabulka Delta Lake již existuje se stejným názvem a v umístění určeném názvem cesty Delta ve výchozím nastavení Stream Analytics zapíše nové záznamy do existující tabulky.

Přesně jednou doručení

Transakční protokol umožňuje Delta Lake zaručit přesně jedno zpracování. Stream Analytics také poskytuje přesně jedno doručení při výstupu dat do Data Lake Storage Gen2 během jednoho spuštění úlohy.

Vynucování schématu

Vynucení schématu znamená, že se všechny nové zápisy do tabulky vynucují, aby byly kompatibilní se schématem cílové tabulky v době zápisu, aby se zajistila kvalita dat.

Všechny záznamy výstupních dat se promítnou do schématu existující tabulky. Pokud se výstup zapíše do nové tabulky Delta, vytvoří se schéma tabulky s prvním záznamem. Pokud příchozí data mají ve srovnání se stávajícím schématem tabulky jeden další sloupec, zapisuje se do tabulky bez sloupce navíc. Pokud příchozí data v porovnání se stávajícím schématem tabulky chybí jeden sloupec, zapíše se do tabulky s hodnotou null.

Pokud neexistuje průsečík mezi schématem tabulky Delta a schématem záznamu úlohy streamování, považuje se za instanci selhání převodu schématu. Nejedná se o jediný případ, který se považuje za selhání převodu schématu.

Při selhání převodu schématu se chování úlohy řídí zásadami zpracování chyb výstupních dat nakonfigurovaných na úrovni úlohy.

Kontrolní body protokolu Delta

Úloha Stream Analytics pravidelně vytváří kontrolní body protokolu Delta ve formátu V1. Kontrolní body protokolu Delta jsou snímky tabulky Delta a obvykle obsahují název datového souboru vygenerovaného úlohou Stream Analytics. Pokud je počet datových souborů velký, vede to k velkým kontrolním bodům, což může způsobit problémy s pamětí v úloze Stream Analytics.

Omezení

  • Dynamický klíč oddílu (zadání názvu sloupce schématu záznamu v cestě Delta) se nepodporuje.
  • Více sloupců oddílů se nepodporuje. Pokud chcete více sloupců oddílů, doporučujeme v dotazu použít složený klíč a pak ho zadat jako sloupec oddílu.
    • V dotazu lze vytvořit složený klíč. Příklad: "SELECT concat (col1, col2) AS compositeColumn INTO [blobOutput] FROM [input]".
  • Zápis do Delta Lake je pouze připojený.
  • Kontrola schématu při testování dotazů není dostupná.
  • Stream Analytics neprovádí komprimace malých souborů.
  • Všechny datové soubory se vytvářejí bez komprese.
  • Typy Datum a Desetinné číslo nejsou podporovány.
  • Zápis do existujících tabulek zapisovací verze 7 nebo vyšší s funkcemi zápisu selžou.
  • Když úloha Stream Analytics zapíše dávku dat do Delta Lake, může vygenerovat několik akcí Přidat soubor. Pokud je pro jednu dávku vygenerováno příliš mnoho akcí Přidat soubor, může se úloha Stream Analytics zaseknout.
  • Úlohy Stream Analytics můžou jenom číst a zapisovat kontrolní body jedné části V1. Kontrolní body s více částmi a formát kontrolního bodu V2 nejsou podporované.