Vlastní dělení výstupu objektu blob ve službě Azure Stream Analytics
Azure Stream Analytics podporuje vlastní dělení výstupu objektu blob s vlastními poli nebo atributy a vlastními vzory cest DateTime.
Vlastní pole nebo atributy
Vlastní pole nebo vstupní atributy zlepšují podřízené pracovní postupy zpracování dat 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ý se akceptuje pro názvy objektů blob. Není možné použít vnořená pole jako klíč oddílu, pokud je nepoužíváte ve spojení s aliasy, ale určité znaky můžete použít k vytvoření hierarchie souborů. Následující dotaz můžete například použít k vytvoření sloupce, který zkombinuje data ze dvou dalších sloupců a vytvoří jedinečný klíč oddílu.
SELECT name, id, CONCAT(name, "/", id) AS nameid
Klíč oddílu musí být NVARCHAR(MAX), BIGINT, FLOAT nebo BIT (úroveň kompatibility 1.2 nebo vyšší). Typy DateTime, Array a Records nejsou podporované, ale dají se použít jako klíče oddílů, pokud se převedou 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ě videoher, kde přijatá data obsahují sloupcový client_id k identifikaci relací. Pokud chcete data rozdělit podle client_id, nastavte pole Model cesty k objektu blob tak, aby při vytváření úlohy zahrnovalo token oddílu {client_id} ve vlastnostech výstupu objektu blob. Když data s různými client_id hodnotami procházejí úlohou Stream Analytics, ukládají se výstupní data do samostatných složek na základě jedné client_id hodnoty na složku.
Podobně pokud vstupem úlohy byla data z milionů senzorů, kde měl každý senzor sensor_id, vzor cesty by byl {sensor_id} , aby se data každého senzoru rozdělila do různých složek.
Když použijete rozhraní REST API, výstupní část souboru JSON použitého pro tento požadavek může vypadat jako na následujícím obrázku:
Jakmile se úloha spustí, clients
kontejner může vypadat jako na následujícím obrázku:
Každá složka může obsahovat více objektů blob, přičemž každý objekt blob obsahuje jeden nebo více záznamů. Ve výše uvedeném příkladu je ve složce s názvem 06000000 jeden objekt blob s následujícím obsahem:
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 ve výstupní cestě byl client_id.
Omezení
Ve výstupní vlastnosti objektu blob Path Pattern 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}
Pokud zákazníci chtějí použít více vstupních polí, můžou vytvořit složený klíč v dotazu pro oddíl vlastní cesty ve výstupu objektu blob pomocí concat. Příklad: Ze vstupu vyberte concat (col1, col2) jako compositeColumn do objektu blobOutput. Pak můžou jako vlastní cestu v úložišti objektů blob zadat compositeColumn .
Klíče oddílů nerozlišují velká a malá písmena, takže klíče oddílů jako
John
ajohn
jsou ekvivalentní. Výrazy se také nedají použít jako klíče oddílů. Například {columnA + columnB} nefunguje.Pokud se vstupní datový proud skládá ze záznamů s kardinalitou klíče oddílu pod hodnotou 8000, záznamy se připojí k existujícím objektům blob a v případě potřeby se vytvoří nové objekty blob. Pokud je kardinalita více než 8000, neexistuje žádná záruka, že se existující objekty blob zapíší do a nebudou se vytvářet nové objekty blob pro libovolný počet záznamů se stejným klíčem oddílu.
Pokud je výstup objektu blob nakonfigurovaný jako neměnný, Vytvoří Stream Analytics při každém odeslání dat nový objekt blob.
Vlastní vzory cest data a času
Vlastní vzory cesty data a času umožňují určit výstupní formát, který bude v souladu s konvencemi streamování Hive, a dává službě Azure Stream Analytics možnost odesílat data do azure HDInsight a Azure Databricks pro následné zpracování. Vlastní vzory cesty DateTime se snadno implementují pomocí klíčového datetime
slova v poli Předpona cesty výstupu objektu blob spolu se specifikátorem formátu. Například, {datetime:yyyy}
.
Podporované tokeny
Následující tokeny specifikátoru formátu lze použít samostatně nebo v kombinaci k dosažení vlastních formátů DateTime:
Specifikátor formátu | Description | Výsledky v příkladu času 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 | 1 |
{datetime:dd} | Den od 01 do 31 | 02 |
{datetime:d} | Den od 1 do 31 | 2 |
{datetime:HH} | Hodina ve 24hodinovém formátu, od 00 do 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í vzory DateTime, můžete přidat token {date} nebo {time} do předpony cesty a vygenerovat tak rozevírací seznam s integrovanými formáty DateTime.
Rozšiřitelnost a omezení
Ve vzoru cesty můžete použít libovolný počet tokenů, {datetime:<specifier>}
dokud nedosáhnete limitu počtu znaků předpony cesty. Specifikátory formátu není možné kombinovat v rámci jednoho tokenu nad rámec kombinací, které už jsou uvedené v rozevíracích náznacích data a času.
V případě oddílu cesty :logs/MM/dd
Platný výraz | Neplatný výraz |
---|---|
logs/{datetime:MM}/{datetime:dd} |
logs/{datetime:MM/dd} |
Stejný specifikátor formátu můžete v předponě cesty použít vícekrát. Token se musí pokaždé opakovat.
Konvence streamování Hive
Vlastní vzory cest pro úložiště objektů blob je možné použít s konvencí streamování Hive, která očekává, že složky budou v názvu složky označené column=
.
Například, year={datetime:yyyy}/month={datetime:MM}/day={datetime:dd}/hour={datetime:HH}
.
Vlastní výstup eliminuje rušivá změny tabulek a ruční přidávání oddílů k přenosu dat mezi Azure Stream Analytics a Hive. Místo toho lze mnoho složek přidat automaticky 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 úvodní příručky azure Stream Analytics Azure Portal. Použijte stejná ukázková data jako v úvodní příručce, která jsou k dispozici také na GitHubu.
Vytvořte jímku výstupu objektu blob s následující konfigurací:
Vzor úplné cesty je následující:
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 denní úroveň.