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í:

  1. timeWindow

    Maximální doba čekání na dávku. Hodnota by měla být řetězcem Timespan. Například 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 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ů.

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

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}",
          }
          ],

Další kroky