Azure Stream Analytics blob-uitvoer partitioneren
Azure Stream Analytics biedt ondersteuning voor het partitioneren van aangepaste blobuitvoer met aangepaste velden of kenmerken en aangepaste datum/tijd-padpatronen.
Aangepast veld of aangepaste kenmerken
Aangepaste veld- of invoerkenmerken verbeteren downstreamgegevensverwerking en rapportagewerkstromen door meer controle over de uitvoer toe te staan.
Opties voor partitiesleutels
De partitiesleutel, of kolomnaam, die wordt gebruikt om invoergegevens te partitioneren, kan elk teken bevatten dat wordt geaccepteerd voor blobnamen. Het is niet mogelijk om geneste velden als partitiesleutel te gebruiken, tenzij deze worden gebruikt in combinatie met aliassen, maar u kunt bepaalde tekens gebruiken om een hiërarchie van bestanden te maken. U kunt bijvoorbeeld de volgende query gebruiken om een kolom te maken waarin gegevens uit twee andere kolommen worden gecombineerd om een unieke partitiesleutel te maken.
SELECT name, id, CONCAT(name, "/", id) AS nameid
De partitiesleutel moet NVARCHAR(MAX), BIGINT, FLOAT of BIT (compatibiliteitsniveau 1.2 of hoger) zijn. De typen DateTime, Array en Records worden niet ondersteund, maar kunnen worden gebruikt als partitiesleutels als ze worden geconverteerd naar tekenreeksen. Zie Gegevenstypen voor Azure Stream Analytics meer informatie.
Voorbeeld
Stel dat een taak invoergegevens van live gebruikerssessies neemt die zijn verbonden met een externe videogameservice waarbij opgenomen gegevens een kolom bevatten client_id om de sessies te identificeren. Als u de gegevens wilt partitioneren op client_id, stelt u het veld Blob Path Pattern in op het opnemen van een partitie-token {client_id} in de blob-uitvoereigenschappen bij het maken van een taak. Wanneer gegevens met verschillende client_id-waarden door de Stream Analytics-taak stromen, worden de uitvoergegevens opgeslagen in afzonderlijke mappen op basis van één client_id per map.

En als de taakinvoer sensorgegevens is van miljoenen sensoren waarbij elke sensor een sensor_id had, zou het padpatroon {sensor_id} zijn om elke sensorgegevens te partitioneren in verschillende mappen.
Met behulp REST API ziet de uitvoersectie van een JSON-bestand dat wordt gebruikt voor die aanvraag er als volgt uit:

Zodra de taak wordt uitgevoerd, kan de clientcontainer er als volgt uitzien:

Elke map kan meerdere blobs bevatten waarin elke blob een of meer records bevat. In het bovenstaande voorbeeld is er één blob in een map met het label '060000000' met de volgende inhoud:

U ziet dat elke record in de blob een kolom client_id die overeenkomt met de mapnaam, omdat de kolom die wordt gebruikt voor het partitioneren van de uitvoer in het uitvoerpad, client_id.
Beperkingen
Er is slechts één aangepaste partitiesleutel toegestaan in de blob-uitvoer-eigenschap Padpatroon. Alle van de volgende padpatronen zijn geldig:
- cluster1/{date}/{aFieldInMyData}
- cluster1/{time}/{aFieldInMyData}
- cluster1/{aFieldInMyData}
- cluster1/{date}/{time}/{aFieldInMyData}
Als klanten meer dan één invoerveld willen gebruiken, kunnen ze een samengestelde sleutel maken in de query voor een aangepaste padpartitie in blob-uitvoer met behulp van CONCAT. Bijvoorbeeld: selecteer concat (col1, col2) als compositeColumn in blobOutput vanuit invoer. Vervolgens kunnen ze compositeColumn opgeven als het aangepaste pad in blobopslag.
Partitiesleutels zijn niet-gevoelig, dus partitiesleutels zoals 'John' en 'john' zijn gelijkwaardig. Expressies kunnen ook niet worden gebruikt als partitiesleutels. {columnA + columnB} werkt bijvoorbeeld niet.
Wanneer een invoerstroom bestaat uit records met een partitiesleutelkardinaliteit van minder dan 8000, worden de records toegevoegd aan bestaande blobs en worden er alleen nieuwe blobs aan toegevoegd wanneer dat nodig is. Als de kardinaliteit meer dan 8000 is, is er geen garantie dat er bestaande blobs naar worden geschreven en dat er geen nieuwe blobs worden gemaakt voor een willekeurig aantal records met dezelfde partitiesleutel.
Als de blob-uitvoer is geconfigureerd alsonveranderbaar, maakt Stream Analytics steeds wanneer gegevens worden verzonden een nieuwe blob.
Aangepaste patronen voor datum/tijd-pad
Met aangepaste datum/tijd-padpatronen kunt u een uitvoerindeling opgeven die is afgestemd op Hive Streaming-conventies, zodat Azure Stream Analytics de mogelijkheid krijgt om gegevens te verzenden naar Azure HDInsight en Azure Databricks voor downstreamverwerking. Aangepaste datum/tijd-padpatronen kunnen eenvoudig worden geïmplementeerd met behulp van het trefwoord in het veld Pad voorvoegsel van de datetime blob-uitvoer, samen met de opmaakopmaakopmaak. Bijvoorbeeld {datetime:yyyy}.
Ondersteunde tokens
De volgende opmaakopmaaktokens kunnen alleen of in combinatie worden gebruikt om aangepaste Datum/tijd-indelingen te bereiken:
| Opmaakopmaak | Description | Resultaten op voorbeeldtijd 2018-01-02T10:06:08 |
|---|---|---|
| {datetime:yyyy} | Het jaar als een getal van vier cijfers | 2018 |
| {datetime:MM} | Maand van 01 tot 12 | 01 |
| {datetime:M} | Maand van 1 tot 12 | 1 |
| {datetime:dd} | Dag van 01 tot 31 | 02 |
| {datetime:d} | Dag van 1 tot en met 31 | 2 |
| {datetime:HH} | Uur met de 24-uursnotatie, van 00 tot 23 | 10 |
| {datetime:mm} | Minuten van 00 tot 60 | 06 |
| {datetime:m} | Minuten van 0 tot 60 | 6 |
| {datetime:ss} | Seconden van 00 tot 60 | 08 |
Als u geen aangepaste datum/tijd-patronen wilt gebruiken, kunt u het token {date} en/of {time} toevoegen aan het pad voorvoegsel om een vervolgkeuzelijst met ingebouwde datum/tijd-indelingen te genereren.

Extensibility and restrictions (Extensibility and restrictions (Extensibility and restrictions
U kunt zoveel tokens, , gebruiken als u wilt in het padpatroon totdat u de tekenlimiet {datetime:<specifier>} pad voorvoegsel bereikt. Opmaakopmaakopmaak kan niet worden gecombineerd binnen één token naast de combinaties die al worden vermeld in de vervolgkeuzelijst voor datum en tijd.
Voor een padpartitie van logs/MM/dd :
| Geldige expressie | Ongeldige expressie |
|---|---|
logs/{datetime:MM}/{datetime:dd} |
logs/{datetime:MM/dd} |
U kunt dezelfde opmaakopmaak meerdere keren gebruiken in het pad voorvoegsel. Het token moet elke keer worden herhaald.
Hive Streaming-conventies
Aangepaste padpatronen voor blobopslag kunnen worden gebruikt met de Hive Streaming-conventie, waarmee wordt verwacht dat mappen in de mapnaam worden column= gelabeld.
Bijvoorbeeld year={datetime:yyyy}/month={datetime:MM}/day={datetime:dd}/hour={datetime:HH}.
Aangepaste uitvoer elimineert het probleem van het wijzigen van tabellen en het handmatig toevoegen van partities aan poortgegevens tussen Azure Stream Analytics hive. In plaats daarvan kunnen veel mappen automatisch worden toegevoegd met behulp van:
MSCK REPAIR TABLE while hive.exec.dynamic.partition true
Voorbeeld
Maak een opslagaccount, een resourcegroep, een Stream Analytics-taak en een invoerbron volgens de Azure Stream Analytics Azure Portal quickstart. Gebruik dezelfde voorbeeldgegevens die worden gebruikt in de snelstartgids, die ook beschikbaar zijn op GitHub.
Maak een blob-uitvoers sink met de volgende configuratie:

Het volledige padpatroon is als volgt:
year={datetime:yyyy}/month={datetime:MM}/day={datetime:dd}
Wanneer u de taak start, wordt er een mapstructuur op basis van het padpatroon gemaakt in uw blobcontainer. U kunt inzoomen op het niveau van de dag.
