Výstupy z Azure Stream Analytics
Úloha Azure Stream Analytics se skládá ze vstupu, dotazu a výstupu. Existuje několik výstupních typů, do kterých můžete odesílat transformovaná data. Tento článek obsahuje seznam podporovaných výstupů Stream Analytics. Při návrhu dotazu Stream Analytics se pomocí klauzule INTO podívejte na název výstupu. Můžete použít jeden výstup na úlohu nebo více výstupů na úlohu streamování (pokud je potřebujete) přidáním několika klauzulí INTO do dotazu.
Pokud chcete vytvářet, upravovat a testovat výstupy úlohy Stream Analytics, můžete použít Azure Portal, Azure PowerShell, rozhraní .NET API, REST API, Visual Studio a Visual Studio Code.
Poznámka:
Důrazně doporučujeme používat nástroje Stream Analytics pro Visual Studio Code pro nejlepší místní vývojové prostředí. V nástrojích Stream Analytics pro Visual Studio 2019 (verze 2.6.3000.0) existují známé mezery ve funkcích a nebude se dále zlepšovat.
Některé typy výstupů podporují dělení , jak je znázorněno v následující tabulce.
Všechny výstupy podporují dávkování, ale pouze některé podporují explicitní nastavení velikosti výstupní dávky. Další informace najdete v části Velikosti výstupní dávky.
Typ výstupu | dělení na části | Zabezpečení |
---|---|---|
Azure Data Explorer | Ano | Spravovaná identita |
Azure Functions | Ano | Přístupový klíč |
Azure Synapse Analytics | Ano | Ověřování uživatele SQL, spravovaná identita |
Blob Storage a Azure Data Lake Gen2 | Ano | Přístupový klíč, spravovaná identita |
Azure Cosmos DB | Ano | Přístupový klíč, spravovaná identita |
Azure Data Lake Storage Gen 2 | Ano | Spravovaná identita uživatele Microsoft Entra |
Azure Event Hubs | Ano, musíte nastavit sloupec klíče oddílu ve výstupní konfiguraci. | Přístupový klíč, spravovaná identita |
Kafka (Preview) | Ano, musíte nastavit sloupec klíče oddílu ve výstupní konfiguraci. | Přístupový klíč, spravovaná identita |
Azure Database for PostgreSQL | Ano | Ověřování pomocí uživatelského jména a hesla |
Power BI | No | Uživatel Microsoft Entra, spravovaná identita |
Fronty služby Azure Service Bus | Ano | Přístupový klíč, spravovaná identita |
Témata služby Azure Service Bus | Ano | Přístupový klíč, spravovaná identita |
Azure SQL Database | Ano, volitelné. | Ověřování uživatele SQL, spravovaná identita |
Azure Table storage | Ano | Klíč účtu |
Důležité
Azure Stream Analytics používá rozhraní API vložení nebo nahrazení návrhem. Tato operace nahradí existující entitu nebo vloží novou entitu, pokud v tabulce neexistuje.
dělení na části
Stream Analytics podporuje oddíly pro všechny výstupy s výjimkou Power BI. Další informace o klíčích oddílů a počtu výstupních zapisovačů najdete v článku o konkrétním typu výstupu, který vás zajímá. Články pro výstupní typy jsou propojeny v předchozí části.
Pro pokročilejší ladění oddílů je navíc možné počet zapisovačů výstupu řídit pomocí INTO <partition count>
klauzule (viz INTO) v dotazu, která může být užitečná při dosažení požadované topologie úlohy. Pokud váš výstupní adaptér není rozdělený do oddílů, nedostatek dat v jednom vstupním oddílu způsobí zpoždění až do doby pozdního příjezdu. V takových případech se výstup sloučí s jedním zapisovačem, což může způsobit kritické body ve vašem kanálu. Další informace o zásadách pozdního příjezdu najdete v tématu Důležité informace o objednávkách událostí Azure Stream Analytics.
Velikost dávky výstupu
Všechny výstupy podporují dávkování, ale jenom některá nastavení podporují explicitní velikost dávky. Azure Stream Analytics používá dávky proměnlivé velikosti ke zpracování událostí a zápisu do výstupů. Modul Stream Analytics obvykle nenapisuje jednu zprávu najednou a používá dávky pro efektivitu. Pokud je rychlost příchozích i odchozích událostí vysoká, Stream Analytics používá větší dávky. Pokud je výchozí rychlost nízká, používá menší dávky k zachování nízké latence.
Chování rozdělení souborů Avro a Parquet
Dotaz Stream Analytics může pro daný výstup vygenerovat více schémat. Seznam sloupců promítaných a jejich typ se může měnit na základě řádku po řádku. Formáty Avro a Parquet záměrně nepodporují schémata proměnných v jednom souboru.
Při směrování datového proudu se schématy proměnných do výstupu pomocí těchto formátů může dojít k následujícímu chování:
- Pokud lze zjistit změnu schématu, aktuální výstupní soubor je zavřený a nový inicializován v novém schématu. Rozdělení souborů, jako je například závažně, zpomaluje výstup, když se změny schématu často mění. Toto chování může výrazně ovlivnit celkový výkon úlohy.
- Pokud se změna schématu nedá rozpoznat, je pravděpodobně odmítnut řádek a úloha se zasekne, protože řádek nemůže být výstupem. Vnořené sloupce nebo pole s více typy jsou situace, které nejsou zjištěny a odmítnuty.
Doporučujeme zvážit výstupy, které používají formát Avro nebo Parquet, aby byly silného typu nebo schématu při zápisu, a dotazy, které je cílí na jejich zápis, jako jsou (explicitní převody a projekce pro jednotné schéma).
Pokud je potřeba vygenerovat více schémat, zvažte vytvoření více výstupů a rozdělení záznamů do každého cíle pomocí WHERE
klauzule.
Vlastnosti okna dávkování výstupu Parquet
Pokud používáte nasazení šablony Azure Resource Manageru nebo rozhraní REST API, jsou tyto dvě vlastnosti okna dávkování:
timeWindow
Maximální doba čekání na dávku. Hodnota by měla být řetězcem
Timespan
. Například00:02:00
dvě minuty. Po uplynutí této doby se dávka zapíše do výstupu, i když není splněn minimální požadavek na řádky. 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ů.sizeWindow
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ů.
Tyto vlastnosti okna dávkování podporují jenom rozhraní API verze 2017-04-01-preview nebo vyšší. Tady je příklad datové části JSON pro volání rozhraní REST API:
"type": "stream",
"serialization": {
"type": "Parquet",
"properties": {}
},
"timeWindow": "00:02:00",
"sizeWindow": "2000",
"datasource": {
"type": "Microsoft.Storage/Blob",
"properties": {
"storageAccounts" : [
{
"accountName": "{accountName}",
"accountKey": "{accountKey}",
}
],