Azure Stream Analytics vlastních výstupních oddílů objektů blob

Azure Stream Analytics podporuje vlastní dělení výstupu objektů blob s vlastními poli nebo atributy a vlastními vzory cesty DateTime.

Vlastní pole nebo atributy

Vlastní pole nebo vstupní atributy zlepšují podřízené pracovní postupy zpracování dat a vytváření 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 rozdělení vstupních dat, může obsahovat libovolný znak, který se přijímá pro názvy objektů blob. Vnořená pole není možné použít jako klíč oddílu, pokud není použita ve spojení s aliasy, ale pomocí určitých znaků můžete vytvořit hierarchii souborů. Pomocí následujícího dotazu můžete například vytvořit sloupec, 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 se nepodporují, ale pokud jsou převedené na řetězce, je možné je použít jako klíče oddílů. Další informace najdete v tématu Azure Stream Analytics Datové typy.

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 k identifikaci relací. Pokud chcete data rozdělit podle client_id, nastavte pole Vzor cesty k objektu blob tak, aby při vytváření úlohy zahrnovalo token oddílu {client_id} ve výstupních vlastnostech objektu blob. Vzhledem k tomu, client_id data s různými hodnotami Stream Analytics, uloží se výstupní data do samostatných složek na základě jedné client_id na složku.

Vzor cesty s ID klienta

Podobně, pokud by vstupem úlohy byla data senzorů z milionů senzorů, kde každý senzor měl sensor_id, vzor cesty by byl {sensor_id}, aby se data ze senzorů rozdělují do různých složek.

Pomocí REST API může část output souboru JSON použitého pro tento požadavek vypadat takto:

REST API výstupu

Po spuštění úlohy může kontejner klientů vypadat takto:

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ů. Ve výše uvedeném příkladu je ve složce jeden objekt blob s názvem "06000000" s následujícím obsahem:

Obsah objektů blob

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

Omezení

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

    • cluster1/{date}/{aFieldInMyData}
    • cluster1/{time}/{aFieldInMyData}
    • cluster1/{aFieldInMyData}
    • cluster1/{datum}/{čas}/{aFieldInMyData}
  2. Pokud zákazníci chtějí použít více než jedno vstupní pole, mohou vytvořit složený klíč v dotazu na vlastní oddíl cesty ve výstupu objektu blob pomocí funkce CONCAT. Příklad: Vyberte concat (col1, col2) jako compositeColumn do blobOutput ze vstupu. Potom zadat compositeColumn jako vlastní cestu v úložišti objektů blob.

  3. Klíče oddílů se nelišují velká a malá písmena, takže klíče oddílů jako John a john jsou ekvivalentní. Výrazy také nelze použít jako klíče oddílů. 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 a v případě potřeby vytvoří nové objekty blob. Pokud je kardinalitou více než 8 000, neexistuje žádná záruka, že se do služby zapisují stávající objekty blob a že se pro libovolný počet záznamů se stejným klíčem oddílu nevytynou nové objekty blob.

  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 cest data a času

Vlastní vzory cest DateTime umožňují určit výstupní formát, který je v souladu s konvencemi streamování Hive Azure Stream Analytics Azure Stream Analytics umožňuje odesílat data do Azure HDInsight a Azure Databricks pro zpracování ve streamování. Vlastní vzory cesty DateTime se snadno implementuje pomocí klíčového slova v poli Předpona cesty ve výstupu vašeho objektu datetime blob spolu se specifikátorem formátu. Například, {datetime:yyyy}.

Podporované tokeny

Následující specifikátory 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 time 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 vlastní vzory DateTime příště používat příště, můžete k předponě cesty přidat token {date} a/nebo {time}, který vygeneruje rozevírací seznam s integrovanými formáty DateTime.

Stream Analytics staré formáty DateTime

Rozšiřitelnost a omezení

Ve vzoru cesty můžete použít tolik tokenů, kolik chcete, dokud nedosáhnete limitu {datetime:<specifier>} znaků Předpona cesty. Specifikátory formátu nelze kombinovat v rámci jednoho tokenu nad rámec kombinací, které jsou uvedené v rozevíracích seznamech data a času.

Pro oddíl cesty logs/MM/dd pro :

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

V předponě cesty můžete použít vícekrát stejný specifikátor formátu. 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 column= složky označené popiskem .

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

Vlastní výstup eliminuje potíže se změnou tabulek a ručním přidáváním oddílů k datům portů mezi Azure Stream Analytics a Hivem. 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 průvodce rychlým Azure Stream Analytics Azure Portal startu. Použijte stejná ukázková data jako v průvodci rychlým startem, která jsou dostupná také na GitHub.

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

Stream Analytics výstupní jímky objektu blob

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žky založená na vzoru cesty. Můžete přejít k podrobnostem na úrovni dne.

Stream Analytics výstup objektu BLOB s vlastním vzorem cesty

Další kroky