Utdata från Azure Stream Analytics

Ett Azure Stream Analytics-jobb består av indata, frågor och utdata. Det finns flera utdatatyper som du kan skicka transformerade data till. I den här artikeln visas de Stream Analytics-utdata som stöds. När du utformar Stream Analytics-frågan refererar du till namnet på utdata med into-satsen. Du kan använda ett enda utdata per jobb eller flera utdata per direktuppspelningsjobb (om du behöver dem) genom att lägga till flera INTO-satser i frågan.

Om du vill skapa, redigera och testa Stream Analytics-jobbutdata kan du använda Azure-portalen, Azure PowerShell, .NET API, REST API, Visual Studio och Visual Studio Code.

Kommentar

Vi rekommenderar starkt att du använder Stream Analytics-verktyg för Visual Studio Code för bästa lokala utvecklingsupplevelse. Det finns kända funktionsluckor i Stream Analytics-verktygen för Visual Studio 2019 (version 2.6.3000.0) och det kommer inte att förbättras framöver.

Vissa utdatatyper stöder partitionering enligt följande tabell.

Alla utdata stöder batchbearbetning, men endast vissa stöder uttryckligen inställning av batchstorleken för utdata. Mer information finns i avsnittet batchstorlekar för utdata.

Utdatatyp Partitionering Säkerhet
Azure-datautforskaren Ja Hanterad identitet
Azure Functions Ja Åtkomstnyckel
Azure Synapse Analytics Ja SQL-användarautentisering,
hanterad identitet
Blob Storage och Azure Data Lake Gen 2 Ja Åtkomstnyckel,
hanterad identitet
Azure Cosmos DB Ja Åtkomstnyckel,
hanterad identitet
Azure Data Lake Storage Gen 2 Ja Microsoft Entra-användarhanterad
identitet
Azure Event Hubs Ja, du måste ange kolumnen partitionsnyckel i utdatakonfigurationen. Åtkomstnyckel,
hanterad identitet
Kafka (förhandsversion) Ja, du måste ange kolumnen partitionsnyckel i utdatakonfigurationen. Åtkomstnyckel,
hanterad identitet
Azure Database for PostgreSQL Ja Autentisering av användarnamn och lösenord
Power BI Nej Microsoft Entra-användare,
Hanterad identitet
Azure Service Bus-köer Ja Åtkomstnyckel,
hanterad identitet
Azure Service Bus-ämnen Ja Åtkomstnyckel,
hanterad identitet
Azure SQL Database Ja, valfritt. SQL-användarautentisering,
hanterad identitet
Azure Table Storage Ja Kontonyckel

Viktigt!

Azure Stream Analytics använder Insert eller Replace API efter design. Den här åtgärden ersätter en befintlig entitet eller infogar en ny entitet om den inte finns i tabellen.

Partitionering

Stream Analytics stöder partitioner för alla utdata förutom Power BI. Mer information om partitionsnycklar och antalet utdataskrivare finns i artikeln för den specifika utdatatyp som du är intresserad av. Artiklar för utdatatyper länkas i föregående avsnitt.

För mer avancerad justering av partitionerna kan dessutom antalet utdataskrivare styras med hjälp av en INTO <partition count> (se INTO)-sats i din fråga, vilket kan vara användbart för att uppnå en önskad jobbtopologi. Om utdatakortet inte är partitionerat orsakar brist på data i en indatapartition en fördröjning upp till den sena ankomsttiden. I sådana fall sammanfogas utdata till en enskild skrivare, vilket kan orsaka flaskhalsar i pipelinen. Mer information om policyn för sena ankomster finns i överväganden för händelsebeställningar i Azure Stream Analytics.

Batchstorlek för utdata

Alla utdata stöder batchbearbetning, men bara vissa stödinställningar batchstorleken explicit. Azure Stream Analytics använder batchar med variabel storlek för att bearbeta händelser och skriva till utdata. Normalt skriver Stream Analytics-motorn inte ett meddelande i taget och använder batchar för effektivitet. När hastigheten för både inkommande och utgående händelser är hög använder Stream Analytics större batchar. När utgående hastighet är låg använder den mindre batchar för att hålla svarstiden låg.

Avro- och Parquet-fildelningsbeteende

En Stream Analytics-fråga kan generera flera scheman för en viss utdata. Listan över kolumner som projiceras och deras typ kan ändras rad för rad. Formaten Avro och Parquet stöder inte variabelscheman i en enda fil.

Följande beteenden kan inträffa när du dirigerar en ström med variabelscheman till utdata med hjälp av följande format:

  • Om schemaändringen kan identifieras stängs den aktuella utdatafilen och en ny initieras i det nya schemat. Att dela upp filer som sådana gör utdata långsammare när schemaändringar sker ofta. Det här beteendet kan allvarligt påverka jobbets övergripande prestanda
  • Om schemaändringen inte kan identifieras avvisas förmodligen raden och jobbet fastnar eftersom raden inte kan matas ut. Kapslade kolumner, eller matriser av flera typer, är situationer som inte identifieras och avvisas.

Vi rekommenderar att du överväger att använda utdata med Avro- eller Parquet-formatet som starkt skrivs, eller schema-on-write, och att frågor som riktar sig till dem skrivs som sådana (explicita konverteringar och projektioner för ett enhetligt schema).

Om flera scheman behöver genereras bör du överväga att skapa flera utdata och dela upp poster i varje mål med hjälp av en WHERE -sats.

Parquet output batching window properties (Parquet output batching window properties)

När du använder Distribution av Azure Resource Manager-mallar eller REST-API:et är de två egenskaperna för batchningsfönstret:

  1. timeWindow

    Maximal väntetid per batch. Värdet ska vara en sträng med Timespan. Till exempel 00:02:00 i två minuter. Efter den här tiden skrivs batchen till utdata även om minimikravet för rader inte uppfylls. Standardvärdet är 1 minut och det tillåtna maxvärdet är 2 timmar. Om blobutdata har sökvägsmönsterfrekvens kan väntetiden inte vara högre än partitionens tidsintervall.

  2. sizeWindow

    Antalet minsta rader per batch. För Parquet skapar varje batch en ny fil. Det aktuella standardvärdet är 2 000 rader och det högsta tillåtna värdet är 10 000 rader.

Dessa egenskaper för batchfönster stöds endast av API-version 2017-04-01-preview eller senare. Här är ett exempel på JSON-nyttolasten för ett REST API-anrop:

"type": "stream",
      "serialization": {
        "type": "Parquet",
        "properties": {}
      },
      "timeWindow": "00:02:00",
      "sizeWindow": "2000",
      "datasource": {
        "type": "Microsoft.Storage/Blob",
        "properties": {
          "storageAccounts" : [
          {
            "accountName": "{accountName}",
            "accountKey": "{accountKey}",
          }
          ],

Nästa steg