Výstupy z Azure Stream Analytics

Úloha Azure Stream Analytics se skládá ze vstupu, dotazu a výstupu. Transformovaná data můžete odesílat do několika výstupních typů. 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. Jeden výstup můžete použít pro úlohu nebo více výstupů na úlohu streamování přidáním více 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:

Pro nejlepší místní vývojové prostředí použijte nástroje Stream Analytics pro Visual Studio Code. Nástroje Stream Analytics pro Visual Studio 2019 (verze 2.6.3000.0) mají známé mezery mezi funkcemi a nebudou se dále zlepšovat.

Některé typy výstupu 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 Partitioning 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
Úložiště blobů a Azure Data Lake Gen2 Ano Přístupový klíč,
spravovaná identita
Azure Cosmos DB Ano Přístupový klíč,
spravovaná identita
Azure Data Lake Storage Gen2 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 Ne 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 databáze Ano, volitelné. Ověřování uživatele SQL,
spravovaná identita
Azure úložiště tabulek (Table storage) Ano Klíč účtu

Důležité

Azure Stream Analytics používá rozhraní API pro vložení nebo nahrazení podle návrhu. Tato operace nahradí existující entitu nebo vloží novou entitu, pokud v tabulce neexistuje.

Partitioning

Stream Analytics podporuje oddíly pro všechny výstupy s výjimkou Power BI. Další informace o partition klíčích a počtu výstupních zapisovačů naleznete v článku věnovaném konkrétnímu 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ů můžete počet zapisovačů výstupu řídit pomocí klauzule INTO <partition count> (viz INTO) ve vašem dotazu. Tento ovládací prvek vám pomůže dosáhnout požadované topologie úlohy. Pokud váš výstupní adaptér není rozdělený na partice, nedostatek dat v jedné vstupní partici způsobí zpoždění až do maximální přípustné doby pozdního příjezdu. V takových případech se výstup sloučí do jednoho zapisovače, což může způsobit kritická místa ve vašem toku. Další informace o zásadách zpracovávání opožděných událostí najdete v úvahách o pořadí událostí v Azure Stream Analytics.

Velikost dávky výstupu

Všechny výstupy podporují dávkování, ale jenom některé podporují explicitní nastavení velikosti 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 nepíše 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ů tímto způsobem výrazně zpomaluje výstup, pokud dochází k častým změnám schématu. Toto chování může vážně ovlivnit celkový výkon úlohy.
  • Pokud změnu schématu nelze zjistit, řádek je pravděpodobně odmítnut a úloha se zasekne, protože řádek nemůže být výstupem. Vnořené sloupce nebo pole s více typy jsou případy, které nejsou odhaleny a vyřazeny.

Zvažte, že výstupy používající formát Avro nebo Parquet jsou silně typované nebo jako schéma-při-zápisu, a pište dotazy, které cílí na tato data pomocí explicitních převodů a projekcí pro jednotné schéma.

Pokud potřebujete 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 dávkování výstupního okna Parquet

Při použití nasazení šablony Azure Resource Manager nebo rozhraní REST API nastavíte dvě vlastnosti dávkovacího okna:

  1. timeWindow

    Maximální doba čekání na dávku. Nastavte hodnotu jako řetězec Timespan. Můžete například použít 00: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 jedna minuta a povolené maximum je dvě hodiny. Pokud má výstup objektu blob frekvenci cest, doba čekání nemůže být vyšší než časový rozsah oddílů.

  2. 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ů.

Rozhraní API verze 2017-04-01-preview nebo vyšší podporuje tyto vlastnosti dávkovacího okna. 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}",
          }
          ],

Další kroky