Sdílet prostřednictvím


Dělení výstupu vlastního objektu blob v Azure Stream Analytics

Azure Stream Analytics podporuje dělení výstupu vlastního objektu blob s vlastními poli nebo atributy a vzory vlastních DateTime cest.

Vlastní pole nebo atributy

Vlastní atributy pole nebo vstupu zlepšují podřízené pracovní postupy zpracování a generování sestav tím, že umožňují větší kontrolu nad výstupem.

Možnosti klíče oddílu

Klíč oddílu nebo název sloupce, který se používá k dělení vstupních dat, může obsahovat libovolný znak, který je pro názvy objektů blob přijat. Vnořená pole není možné použít jako klíč oddílu, pokud se nepoužívají společně s aliasy. K vytvoření hierarchie souborů však můžete použít určité znaky. Pokud například chcete vytvořit sloupec, který kombinuje data ze dvou dalších sloupců, abyste vytvořili jedinečný klíč oddílu, můžete použít následující dotaz:

SELECT name, id, CONCAT(name, "/", id) AS nameid

Klíč oddílu musí být NVARCHAR(MAX), BIGINT, FLOATnebo BIT (1.2 úroveň kompatibility nebo vyšší). , DateTimeArraya Records typy nejsou podporovány, ale dají se použít jako klíče oddílu, pokud jsou převedeny na řetězce. Další informace najdete v tématu Datové typy Azure Stream Analytics.

Příklad

Předpokládejme, že úloha přebírá vstupní data z živých uživatelských relací připojených k externí službě videohry, kde ingestované data obsahují sloupec client_id pro identifikaci relací. Pokud chcete data rozdělit podle client_id, nastavte pole vzoru cesty objektu blob tak, aby při vytváření úlohy zahrnovalo token {client_id} oddílu ve výstupních vlastnostech objektu blob. Jako data s různými client_id hodnotami procházející úlohou Stream Analytics se výstupní data ukládají do samostatných složek na základě jedné client_id hodnoty pro každou složku.

Snímek obrazovky znázorňující vzor cesty s ID klienta

Podobně platí, že pokud vstupem úlohy byla data snímačů z milionů senzorů, kde měl každý senzor nějaký , sensor_idmodel cesty by měl {sensor_id} rozdělit data ze snímačů do různých složek.

Když použijete rozhraní REST API, může výstupní část souboru JSON použitého pro tento požadavek vypadat jako na následujícím obrázku:

Snímek obrazovky znázorňující výstup rozhraní REST API

Po spuštění clients úlohy může kontejner vypadat jako na následujícím obrázku:

Snímek obrazovky znázorňující kontejner klientů

Každá složka může obsahovat více objektů blob, kde každý objekt blob obsahuje jeden nebo více záznamů. V předchozím příkladu je ve složce "06000000" označený jeden objekt blob s následujícím obsahem:

Snímek obrazovky znázorňující obsah objektu blob

Všimněte si, že každý záznam v objektu blob má client_id sloupec odpovídající názvu složky, protože sloupec použitý k rozdělení výstupu do výstupní cesty byl client_id.

Omezení

  1. Ve výstupní vlastnosti objektu blob vzoru cesty je povolen pouze jeden vlastní klíč oddílu. Všechny následující vzory cest jsou platné:

    • cluster1/{date}/{aFieldInMyData}
    • cluster1/{time}/{aFieldInMyData}
    • cluster1/{aFieldInMyData}
    • cluster1/{date}/{time}/{aFieldInMyData}
  2. Pokud zákazníci chtějí použít více než jedno vstupní pole, můžou vytvořit složený klíč v dotazu pro vlastní oddíl cesty ve výstupu objektu blob pomocí CONCAT. Příklad: select concat (col1, col2) as compositeColumn into blobOutput from input. Pak můžou jako vlastní cestu zadat compositeColumn ve službě Azure Blob Storage.

  3. Klíče oddílů nerozlišují malá a velká písmena, takže klíče oddílů jsou podobné John a john jsou ekvivalentní. Výrazy se také nedají použít jako klíče oddílu. Například {columnA + columnB} nefunguje.

  4. Pokud se vstupní datový proud skládá ze záznamů s kardinalitou klíče oddílu pod 8 000, připojí se záznamy k existujícím objektům blob. V případě potřeby vytvoří pouze nové objekty blob. Pokud je kardinalita více než 8 000, neexistuje žádná záruka, že se existující objekty blob zapíšou. Nové objekty blob se nevytvořily pro libovolný počet záznamů se stejným klíčem oddílu.

  5. Pokud je výstup objektu blob nakonfigurovaný jako neměnný, Stream Analytics při každém odeslání dat vytvoří nový objekt blob.

Vlastní vzory cesty DateTime

Vlastní DateTime vzory cest umožňují zadat výstupní formát, který je v souladu s konvencemi streamování Hive, což stream Analytics umožňuje odesílat data do Azure HDInsight a Azure Databricks pro zpracování po směru zpracování. Vlastní DateTime vzory cest se snadno implementují pomocí klíčového datetime slova v poli Předpona cesty výstupu objektu blob spolu se specifikátorem formátu. Příklad: {datetime:yyyy}.

Podporované tokeny

Následující specifikační tokeny formátu lze použít samostatně nebo v kombinaci k dosažení vlastních DateTime formátů.

Specifikátor formátu Popis Výsledky v ukázkové době 2018-01-02T10:06:08
{datetime:yyyy} Rok jako čtyřmístné číslo 2018
{datetime:MM} Měsíc od 01 do 12 01
{datetime:M} Měsíc od 1 do 12 0
{datetime:dd} Den od 01 do 31 02
{datetime:d} Den od 1 do 31 2
{datetime:HH} Hour using the 24-hour format, from 00 to 23 10
{datetime:mm} Minuty od 00 do 60 06
{datetime:m} Minuty od 0 do 60 6
{datetime:ss} Sekundy od 00 do 60 08

Pokud nechcete používat vlastní DateTime vzory, můžete přidat {date} a/nebo {time} token do pole Předpona cesty a vygenerovat rozevírací seznam s předdefinovanými DateTime formáty.

Snímek obrazovky znázorňující staré formáty DateTime stream Analytics

Rozšiřitelnost a omezení

V vzoru cesty můžete použít libovolný počet tokenů ({datetime:<specifier>}), dokud nedosáhnete limitu znaku předpony cesty. Specifikátory formátu se nedají kombinovat v rámci jednoho tokenu nad rámec kombinací, které už jsou uvedené v rozevíracích náznacích data a času.

Pro oddíl logs/MM/ddcesty:

Platný výraz Neplatný výraz
logs/{datetime:MM}/{datetime:dd} logs/{datetime:MM/dd}

V předponě cesty můžete použít stejný specifikátor formátu vícekrát. Token se musí opakovat pokaždé.

Konvence streamování Hive

Vlastní vzory cest pro Blob Storage je možné použít s konvencí streamování Hive, která očekává, že složky budou označeny column= v názvu složky.

Příklad: year={datetime:yyyy}/month={datetime:MM}/day={datetime:dd}/hour={datetime:HH}.

Vlastní výstup eliminuje omezení změn tabulek a ruční přidávání oddílů k přenosům dat mezi Stream Analytics a Hive. Místo toho je možné automaticky přidat mnoho složek pomocí:

MSCK REPAIR TABLE while hive.exec.dynamic.partition true

Příklad

Vytvořte účet úložiště, skupinu prostředků, úlohu Stream Analytics a vstupní zdroj podle rychlého startu na webu Stream Analytics Na webu Azure Portal . Použijte stejná ukázková data použitá v rychlém startu. Ukázková data jsou k dispozici také na GitHubu.

Vytvořte výstupní jímku objektu blob s následující konfigurací:

Snímek obrazovky znázorňující jímku výstupu objektu blob pro vytvoření Stream Analytics

Vzor úplné cesty je:

year={datetime:yyyy}/month={datetime:MM}/day={datetime:dd}

Při spuštění úlohy se v kontejneru objektů blob vytvoří struktura složek založená na vzoru cesty. Můžete přejít k podrobnostem na úrovni dne.

Snímek obrazovky znázorňující výstup objektu blob Stream Analytics s vlastním vzorem cesty