Sdílet prostřednictvím


Výstup služby Azure Blob Storage a Data Lake Storage Gen2 ze stream Analytics

Azure Data Lake Storage Gen2 představuje Azure Storage základ pro vytváření podnikových datových jezer v Azure. Data Lake Storage Gen2 je navržená tak, aby obsluhuje více petabajtů informací a současně udržuje stovky gigabitů propustnosti. Můžete ho použít ke snadné správě obrovských objemů dat. Základní součástí Služby Data Lake Storage Gen2 je přidání hierarchického oboru názvů do služby Azure Blob Storage.

Blob Storage nabízí nákladově efektivní a škálovatelné řešení pro ukládání velkých objemů nestrukturovaných dat v cloudu. Úvod ke službě Blob Storage a jeho použití najdete v tématu Nahrání, stažení a výpis objektů blob pomocí webu Azure Portal.

Poznámka:

Informace o chování specifické pro formáty Avro a Parquet najdete v souvisejících částech přehledu.

Konfigurace výstupu

Následující tabulka uvádí názvy vlastností a jejich popisy pro vytvoření výstupu objektu blob nebo Data Lake Storage Gen2.

Název vlastnosti Popis
Alias pro výstup Popisný název použitý v dotazech k nasměrování výstupu dotazu na tento objekt blob.
Účet úložiště Název účtu úložiště, do kterého odesíláte výstup.
Klíč účtu úložiště Tajný klíč přidružený k účtu úložiště.
Kontejner Logické seskupení objektů blob uložených ve službě Blob Storage Když nahrajete objekt blob do služby Blob Storage, musíte pro tento objekt blob zadat kontejner.

Název dynamického kontejneru je volitelný. Podporuje jeden a pouze jeden dynamický {field} název kontejneru. Pole musí existovat ve výstupních datech a postupovat podle zásad názvu kontejneru.

Datový typ pole musí být string. Pokud chcete použít více dynamických polí nebo kombinovat statický text spolu s dynamickým polem, můžete ho definovat v dotazu pomocí předdefinovaných řetězcových funkcí, jako CONCAT a LTRIM.
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. Přečtěte si další informace o Delta Lake.
Název cesty Delta Vyžaduje se, pokud je formát serializace události Delta Lake. Cesta, která se používá k zápisu tabulky Delta Lake v zadaném kontejneru. Obsahuje název tabulky. Další informace a příklady najdete v tématu Zápis do tabulky Delta Lake.
Režim zápisu Režim zápisu řídí způsob, jakým Azure Stream Analytics zapisuje do výstupního souboru. Právě jednou se doručení provádí pouze v případě, že je režim zápisu jednou. Další informace naleznete v následující části.
Sloupec oddílu Nepovinné. Název {field} z výstupních dat do oddílu. Podporuje se pouze jeden sloupec oddílu.
Vzor cesty Vyžaduje se, pokud je formát serializace události Delta Lake. Vzor cesty k souboru, který se používá k zápisu objektů blob v zadaném kontejneru.

Ve vzoru cesty můžete použít jednu nebo více instancí proměnných data a času k určení frekvence zápisu objektů blob: {date}, {time}.

Pokud je režim zápisu jednou, musíte použít obojí {date} i {time}.

Vlastní dělení objektů blob můžete použít k zadání jednoho vlastního {field} názvu z dat události do objektů blob oddílů. Název pole je alfanumerický a může obsahovat mezery, pomlčky a podtržítka. Omezení vlastních polí zahrnují následující:
  • Pokud je režim zápisu jednou, není povolen žádný dynamický vlastní {field} název.
  • V názvech polí se nerozlišuje malá a velká písmena. Služba například nemůže rozlišovat mezi sloupcem ID a sloupcem id.
  • Vnořená pole nejsou povolená. Místo toho použijte alias v dotazu úlohy k "zploštění" pole.
  • Výrazy nelze použít jako název pole.

Tato funkce umožňuje v cestě používat vlastní konfigurace specifikátoru formátu data a času. Vlastní formáty data a času musí být zadány po jednom a uzavřeny klíčovým slovem {datetime:\<specifier>} . Přípustné vstupy jsou \<specifier> , , MM, M, ddHHHd, mm, m, , ss, nebo s.yyyy Klíčové {datetime:\<specifier>} slovo lze použít vícekrát v cestě k vytvoření vlastních konfigurací data a času.

Příklady:
  • Příklad 1: cluster1/logs/{date}/{time}
  • Příklad 2: cluster1/logs/{date}
  • Příklad 3: cluster1/{client_id}/{date}/{time}
  • Příklad 4: cluster1/{datetime:ss}/{myField} kde dotaz je SELECT data.myField AS myField FROM Input;
  • Příklad 5: cluster1/year={datetime:yyyy}/month={datetime:MM}/day={datetime:dd}

Časové razítko vytvořené struktury složek se řídí časem UTC, nikoli místním časem. System.Timestamp je čas používaný pro veškeré dělení na základě času.

Pojmenování souborů používá následující konvenci:

{Path Prefix Pattern}/schemaHashcode_Guid_Number.extension

Tady představuje jedinečný identifikátor přiřazený internímu zapisovači, Guid který se vytvoří pro zápis do souboru objektu blob. Číslo představuje index bloku objektu blob.

Ukázkové výstupní soubory:
  • Myoutput/20170901/00/45434_gguid_1.csv
  • Myoutput/20170901/01/45434_gguid_1.csv

Další informace o této funkci najdete v tématu Dělení výstupu vlastního objektu blob služby Azure Stream Analytics.
Formát data Vyžaduje se, pokud je formát serializace události Delta Lake. Pokud se token data používá v cestě předpony, můžete vybrat formát data, ve kterém jsou soubory uspořádané. Příklad: YYYY/MM/DD.
Formát času Vyžaduje se, pokud je formát serializace události Delta Lake. Pokud se časový token používá v cestě předpony, zadejte formát času, ve kterém jsou soubory uspořádány.
Minimální počet řádků Počet minimálních řádků na dávku. Pro Parquet vytvoří každá dávka nový soubor. Aktuální výchozí hodnota je 2 000 řádků a povolené maximum je 10 000 řádků.
Maximální doba Maximální doba čekání na dávku. Po uplynutí této doby se dávka zapíše do výstupu, i když není splněn minimální požadavek na řádky. Aktuální výchozí hodnota je 1 minuta a povolené maximum je 2 hodiny. Pokud má výstup objektu blob frekvenci cest, doba čekání nemůže být vyšší než časový rozsah oddílů.
Kódování Pokud používáte formát CSV nebo JSON, musí být zadáno kódování. UTF-8 je v tuto chvíli jediným podporovaným formátem kódování.
Delimiter Platí pouze pro serializaci CSV. Stream Analytics podporuje mnoho běžných oddělovačů pro serializaci dat CSV. Podporované hodnoty jsou čárka, středník, mezera, tabulátor a svislý pruh.
Formát Platí pouze pro serializaci JSON. Řádek oddělený určuje, že výstup je formátován tak, že každý objekt JSON oddělený novým řádkem. Pokud vyberete Řádek oddělený, json se načte jeden objekt najednou. Celý samotný obsah by nebyl platným json. Pole určuje, že výstup je formátován jako pole objektů JSON. Toto pole se zavře pouze v případě, že se úloha zastaví nebo se Stream Analytics přesune do dalšího časového intervalu. Obecně platí, že je vhodnější použít json oddělený řádkem, protože nevyžaduje žádné zvláštní zpracování, zatímco výstupní soubor se stále zapisuje.

Přesně jednou doručení (Public Preview)

Kompletní přesně jednou doručení při čtení jakéhokoli vstupu streamování znamená, že se zpracovávaná data zapisují do výstupu Data Lake Storage Gen2 jednou bez duplicit. Když je tato funkce povolená, vaše úloha Stream Analytics zaručuje, že nedojde ke ztrátě dat a nevygenerují se žádné duplicity jako výstup, a to v době posledního výstupu restartování iniciované uživatelem. Zjednodušuje kanál streamování tím, že nemusí implementovat logiku odstranění duplicitních dat a řešit potíže s ní.

Režim zápisu

Stream Analytics zapisuje do vašeho účtu Blob Storage nebo Data Lake Storage Gen2 dvěma způsoby. Jedním ze způsobů je připojit výsledky buď do stejného souboru, nebo do posloupnosti souborů, ve které přicházejí výsledky. Druhým způsobem je zapsat všechny výsledky pro časový oddíl, pokud jsou k dispozici všechna data pro časový oddíl. Když je režim zápisu jednou povolený, je právě jedno doručení.

Pro Delta Lake není k dispozici žádná možnost režimu zápisu. Výstup Delta Lake ale také poskytuje záruky přesně jednou pomocí protokolu Delta. Nevyžaduje časový oddíl a zapisuje výsledky nepřetržitě na základě parametrů dávkování, které uživatel definoval.

Poznámka:

Pokud nechcete používat funkci Preview pro přesně jednou doručení, vyberte Připojit jako výsledek.

Konfigurace

Pokud chcete pro účet Blob Storage nebo Data Lake Storage Gen2 přijímat přesně jedno doručení, musíte nakonfigurovat následující nastavení:

  • Po výběru všech výsledků časového oddílu je pro váš režim zápisu k dispozici jedenkrát.
  • Zadejte vzor cesty se {date} zadaným i {time} zadaným vzorem cesty.
  • Zadejte formát data a čas.

Omezení

  • Dílčí stream se nepodporuje.
  • Vzor cesty se stane požadovanou vlastností a musí obsahovat obě {date} a {time}. Není povolen žádný dynamický vlastní {field} název. Přečtěte si další informace o vlastním vzoru cesty.
  • Pokud je úloha spuštěna ve vlastním čase před nebo po posledním výstupu, existuje riziko přepsání souboru. Pokud je například formát času nastavený na HH, soubor se vygeneruje každou hodinu. Pokud úlohu zastavíte v 8:15 a restartujete úlohu v 8:30, soubor vygenerovaný mezi 8 a 9 do 9 do 9:00 pokrývá pouze data od 8:30 do 9 do 9:00. Data z 8:15 do 8:15 se při přepsání ztratí.

Výstupní soubory objektu blob

Při použití služby Blob Storage jako výstupu se v objektu blob vytvoří nový soubor v následujících případech:

  • Soubor překračuje maximální počet povolených bloků (aktuálně 50 000). Můžete dosáhnout maximálního povoleného počtu bloků bez dosažení maximální povolené velikosti objektu blob. Pokud je například rychlost výstupu vysoká, můžete zobrazit více bajtů na jeden blok a velikost souboru je větší. Pokud je výstupní rychlost nízká, každý blok má méně dat a velikost souboru je menší.
  • Ve výstupu došlo ke změně schématu a výstupní formát vyžaduje pevné schéma (CSV, Avro nebo Parquet).
  • Úloha se restartuje, a to buď externě tím, že ji uživatel zastaví a spustí nebo interně pro údržbu systému nebo obnovení chyb.
  • Dotaz je plně rozdělený a pro každý výstupní oddíl se vytvoří nový soubor. Pochází z použití PARTITION BY nebo nativní paralelizace zavedené v úrovni kompatibility 1.2.
  • Uživatel odstraní soubor nebo kontejner účtu úložiště.
  • Výstup je čas rozdělený pomocí vzoru předpony cesty a nový objekt blob se použije, když se dotaz přesune na další hodinu.
  • Výstup je rozdělený podle vlastního pole a nový objekt blob se vytvoří pro klíč oddílu, pokud neexistuje.
  • Výstup je rozdělený podle vlastního pole, kde kardinalita klíče oddílu přesahuje 8 000 a vytvoří se nový objekt blob pro klíč oddílu.

dělení na části

Pro klíč oddílu použijte {date} a {time} tokeny z polí událostí ve vzoru cesty. Zvolte formát data, například YYYY/MM/DD, DD/MM/YYYYnebo MM-DD-YYYY. HH se používá pro formát času. Výstup objektu blob je možné rozdělit podle jednoho vlastního atributu {fieldname} události nebo {datetime:\<specifier>}. Počet výstupních zapisovačů se řídí vstupním dělením pro plně paralelizovatelné dotazy.

Velikost dávky výstupu

Maximální velikost zprávy najdete v tématu Omezení služby Azure Storage. Maximální velikost bloku objektu blob je 4 MB a maximální počet bloků objektů blob je 50 000.

Omezení

  • Pokud se ve vzoru cesty použije symbol lomítka (/například/folder2/folder3), vytvoří se prázdné složky a v Průzkumník služby Storage se nezobrazí.
  • Stream Analytics se připojí ke stejnému souboru v případech, kdy není potřeba nový soubor objektu blob. Může to způsobit, že se vygenerují další triggery, pokud jsou služby Azure, jako je Azure Event Grid, nakonfigurované tak, aby se aktivovaly při aktualizaci souboru objektu blob.
  • Stream Analytics se ve výchozím nastavení připojí k objektu blob. Pokud je výstupním formátem pole JSON, dokončí se soubor při vypnutí nebo když se výstup přesune do dalšího oddílu pro výstupy rozdělené podle času. V některých případech, například nečistý restart, je možné, že chybí pravá hranatá závorka (]) pro pole JSON.