Event Hubs-uitvoer van Azure Stream Analytics
De Azure Event Hubs-service is een zeer schaalbare gebeurtenis ingestor voor publiceren/abonneren. Het kan miljoenen gebeurtenissen per seconde verzamelen. Een gebruik van een Event Hub als uitvoer is wanneer de uitvoer van een Stream Analytics-taak de invoer wordt van een andere streamingtaak. Zie de sectie Batchgrootte van uitvoer voor meer informatie over de maximale berichtgrootte en de optimalisatie van de batchgrootte .
Uitvoerconfiguratie
De volgende tabel bevat de parameters die nodig zijn om gegevensstromen van Event Hubs als uitvoer te configureren.
Naam van eigenschap | Description |
---|---|
Uitvoeralias | Een beschrijvende naam die in query's wordt gebruikt om de query-uitvoer naar deze Event Hub te leiden. |
Event hub-naamruimte | Een container voor een set berichtenentiteiten. Wanneer u een nieuwe Event Hub hebt gemaakt, hebt u ook een Event Hub-naamruimte gemaakt. |
Naam van Event Hub | De naam van de event hub-uitvoer. |
Naam van Event Hub-beleid | Het beleid voor gedeelde toegang, dat u kunt maken op het tabblad Configureren van de Event Hub. Elk beleid voor gedeelde toegang heeft een naam, machtigingen die u instelt en toegangssleutels. |
Event Hub-beleidssleutel | De gedeelde toegangssleutel die wordt gebruikt om de toegang tot de Event Hub-naamruimte te verifiëren. |
Kolom partitiesleutel | Optioneel. Een kolom met de partitiesleutel voor event hub-uitvoer. |
Serialisatie-indeling van gebeurtenissen | De serialisatie-indeling voor uitvoergegevens. JSON, CSV en Avro worden ondersteund. |
Encoding | Voor CSV en JSON is UTF-8 op dit moment de enige ondersteunde coderingsindeling. |
Scheidingsteken | Alleen van toepassing op CSV-serialisatie. Stream Analytics ondersteunt een aantal algemene scheidingstekens voor het serialiseren van gegevens in CSV-indeling. Ondersteunde waarden zijn komma's, puntkomma's, spatie, tab en verticale balk. |
Indeling | Alleen van toepassing op JSON-serialisatie. Regel gescheiden geeft aan dat de uitvoer wordt opgemaakt door elk JSON-object te laten scheiden door een nieuwe regel. Als u Regel gescheiden selecteert, wordt de JSON met één object tegelijk gelezen. De hele inhoud op zichzelf zou geen geldige JSON zijn. Matrix geeft aan dat de uitvoer is opgemaakt als een matrix van JSON-objecten. |
Eigenschapskolommen | Optioneel. Door komma's gescheiden kolommen die moeten worden gekoppeld als gebruikerseigenschappen van het uitgaande bericht in plaats van de nettolading. Meer informatie over deze functie vindt u in de sectie Aangepaste metagegevenseigenschappen voor uitvoer. |
Partitionering
Partitionering varieert, afhankelijk van de partitie-uitlijning. Wanneer de partitiesleutel voor event hub-uitvoer even goed is uitgelijnd met de upstream (vorige) querystap, is het aantal schrijvers hetzelfde als het aantal partities in de Event Hub-uitvoer. Elke schrijver gebruikt de klasse EventHubSender om gebeurtenissen naar de specifieke partitie te verzenden. Wanneer de partitiesleutel voor event hub-uitvoer niet is uitgelijnd met de upstream (vorige) querystap, is het aantal schrijvers hetzelfde als het aantal partities in die vorige stap. Elke schrijver gebruikt de klasse SendBatchAsync in EventHubClient om gebeurtenissen naar alle uitvoerpartities te verzenden.
Grootte van uitvoerbatch
De maximale berichtgrootte is 256 kB of 1 MB per bericht. Zie Event Hubs-limieten voor meer informatie. Wanneer de invoer-/uitvoerpartitionering niet is uitgelijnd, wordt elke gebeurtenis afzonderlijk EventData
ingepakt en verzonden in een batch van maximaal de maximale berichtgrootte. Dit gebeurt ook als aangepaste metagegevenseigenschappen worden gebruikt. Wanneer de invoer-/uitvoerpartitionering is uitgelijnd, worden meerdere gebeurtenissen in één EventData
exemplaar verpakt, tot de maximale berichtgrootte, en verzonden.
Aangepaste metagegevenseigenschappen voor uitvoer
U kunt querykolommen als gebruikerseigenschappen toevoegen aan uw uitgaande berichten. Deze kolommen gaan niet naar de nettolading. De eigenschappen zijn aanwezig in de vorm van een woordenlijst in het uitvoerbericht. Sleutel is de kolomnaam en waarde is de kolomwaarde in de eigenschappenwoordenlijst. Alle Stream Analytics-gegevenstypen worden ondersteund, behalve Record en Matrix.
In het volgende voorbeeld worden de velden DeviceId
en DeviceStatus
toegevoegd aan de metagegevens.
Gebruik de volgende query:
select *, DeviceId, DeviceStatus from iotHubInput
Configureren
DeviceId,DeviceStatus
als eigenschapkolommen in de uitvoer.
In de volgende afbeelding ziet u de verwachte eigenschappen van het uitvoerbericht die zijn geïnspecteerd in een Event Hub met behulp van Service Bus Explorer.
Exactly Once Delivery
Exactly once-levering wordt standaard ondersteund in Event Hubs-uitvoer. Ongeacht uw invoer garandeert Stream Analytics geen gegevensverlies of duplicaten in een Event Hubs-uitvoer, bij door de gebruiker geïnitieerde herstarts vanaf het laatste uitvoertijdsgetijde, waardoor duplicaten niet kunnen worden geproduceerd. Dit vereenvoudigt de streaming-pijplijn aanzienlijk omdat u ontdubbelingslogica niet hoeft te controleren, implementeren en oplossen.