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
, FLOAT
nebo BIT
(1.2 úroveň kompatibility nebo vyšší). , DateTime
Array
a 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.
Podobně platí, že pokud vstupem úlohy byla data snímačů z milionů senzorů, kde měl každý senzor nějaký , sensor_id
model 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:
Po spuštění clients
úlohy může kontejner vypadat jako na následujícím obrázku:
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:
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í
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}
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 zadatcompositeColumn
ve službě Azure Blob Storage.Klíče oddílů nerozlišují malá a velká písmena, takže klíče oddílů jsou podobné
John
ajohn
jsou ekvivalentní. Výrazy se také nedají použít jako klíče oddílu. Například{columnA + columnB}
nefunguje.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.
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.
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/dd
cesty:
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í:
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.