Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Azure Stream Analytics ondersteunt het partitioneren van aangepaste blob-uitvoer met aangepaste velden of kenmerken en aangepaste DateTime padpatronen.
Aangepast veld of kenmerken
Aangepaste veld- of invoerkenmerken verbeteren downstreamgegevensverwerkings- en rapportagewerkstromen door meer controle over de uitvoer mogelijk te maken.
Opties voor partitiesleutels
De partitiesleutel of kolomnaam die wordt gebruikt voor het partitioneren van invoergegevens, kan elk teken bevatten dat wordt geaccepteerd voor blobnamen. U kunt geneste velden niet gebruiken als partitiesleutel, tenzij u deze samen met aliassen gebruikt. U kunt echter bepaalde tekens gebruiken om een hiërarchie van bestanden te maken. Als u bijvoorbeeld een kolom wilt maken waarin gegevens uit twee andere kolommen worden gecombineerd om een unieke partitiesleutel te maken, kunt u de volgende query gebruiken:
SELECT name, id, CONCAT(name, "/", id) AS nameid
De partitiesleutel moet NVARCHAR(MAX), BIGINT, FLOAT of BIT zijn (compatibiliteitsniveau van 1.2 of hoger). De DateTimetypen , Arrayen Records typen worden niet ondersteund, maar kunnen worden gebruikt als partitiesleutels als ze worden geconverteerd naar tekenreeksen. Zie Azure Stream Analytics-gegevenstypen voor meer informatie.
Blob-uitvoer partitioneren op basis van een aangepast veld
Stel dat een taak invoergegevens gebruikt van livegebruikerssessies die zijn verbonden met een externe videogameservice waarbij opgenomen gegevens een kolom client_id bevatten om de sessies te identificeren. Als u de gegevens client_id wilt partitioneren, stelt u het blobpadpatroonveld in om een partitietoken {client_id} op te nemen in de uitvoereigenschappen van de blob wanneer u een taak maakt. Als 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 waarde per map.
Als de invoer voor de taak sensorgegevens van miljoenen sensoren was, waarbij elke sensor een sensor_id had, zou het padpatroon {sensor_id} zijn om de gegevens van elke sensor te verdelen naar verschillende mappen.
Wanneer u de REST API gebruikt, kan de uitvoersectie van een JSON-bestand dat voor die aanvraag wordt gebruikt, eruitzien als de volgende afbeelding:
Nadat de taak is uitgevoerd, kan de clients container er als volgt uitzien:
Elke map kan meerdere blobs bevatten waarbij elke blob een of meer records bevat. In het voorgaande voorbeeld bevindt zich één blob in een map, gelabeld "06000000", met de volgende inhoud:
U ziet dat elke record in de blob een client_id kolom bevat die overeenkomt met de mapnaam omdat de kolom die wordt gebruikt om de uitvoer in het uitvoerpad te partitioneren, is client_id.
Beperkingen voor aangepaste partitiesleutels
Er is slechts één aangepaste partitiesleutel toegestaan in de uitvoereigenschap voor het padpatroon van blobs. Alle volgende padpatronen zijn geldig:
cluster1/{date}/{aFieldInMyData}cluster1/{time}/{aFieldInMyData}cluster1/{aFieldInMyData}cluster1/{date}/{time}/{aFieldInMyData}
Als u meer dan één invoerveld wilt gebruiken, kunt u een samengestelde sleutel maken in een query voor aangepaste padpartitie in blobuitvoer met behulp van
CONCAT. Een voorbeeld isselect concat (col1, col2) as compositeColumn into blobOutput from input. Vervolgens kunt u opgevencompositeColumnals het aangepaste pad in Azure Blob Storage.Partitiesleutels zijn niet hoofdlettergevoelig, dus partitiesleutels zoals
Johnenjohnzijn gelijkwaardig. U kunt ook geen expressies gebruiken als partitiesleutels. Werkt bijvoorbeeld{columnA + columnB}niet.Wanneer een invoerstroom bestaat uit records met een partitiesleutelkardinaliteit onder 8.000, worden de records toegevoegd aan bestaande blobs en worden er alleen nieuwe blobs gemaakt wanneer dat nodig is. Als de kardinaliteit meer dan 8.000 is, is er geen garantie dat Stream Analytics schrijft naar bestaande blobs. Stream Analytics maakt geen nieuwe blobs voor een willekeurig aantal records met dezelfde partitiesleutel.
Als de blob-uitvoer is geconfigureerd als onveranderbaar, maakt Stream Analytics telkens wanneer gegevens worden verzonden een nieuwe blob.
Aangepaste patronen voor datum/tijd-pad
Met aangepaste DateTime padpatronen kunt u een uitvoerindeling opgeven die overeenkomt met Hive Streaming-conventies, waardoor Stream Analytics de mogelijkheid biedt om gegevens te verzenden naar Azure HDInsight en Azure Databricks voor downstreamverwerking. Aangepaste DateTime padenpatronen worden eenvoudig geïmplementeerd met behulp van het datetime trefwoord in het veld Padvoorvoegsel van uw blobuitvoer, samen met de formaatspecificeerder. Een voorbeeld is {datetime:yyyy}.
Ondersteunde tokens
De volgende notatieaanduidingstokens kunnen alleen of in combinatie worden gebruikt om aangepaste DateTime indelingen te bereiken.
| Opmaakaanduiding | Beschrijving | Resultaten op voorbeeldtijd 2018-01-02T10:06:08 |
|---|---|---|
| {datetime:yyyy} | Het jaar als een getal van vier cijfers | 2018 |
| {datum/tijd:MM} | Maand van 01 tot 12 | 01 |
| {datum/tijd:M} | Maand van 1 tot 12 | 1 |
| {datetime:dd} | Dag van 01 tot 31 | 02 |
| {datum/tijd:d} | Dag van 1 tot 31 | 2 |
| {datetime:HH} | Uur met de indeling van 24 uur, van 00 tot 23 | 10 |
| {datum/tijd:mm} | Minuten van 00 tot 60 | 06 |
| {datum/tijd:m} | Minuten van 0 tot 60 | 6 |
| {datetime:ss} | Seconden van 00 tot 60 | 08 |
Als u geen aangepaste DateTime patronen wilt gebruiken, kunt u het {date} en/of {time} token toevoegen aan het veld Padvoorvoegsel om een vervolgkeuzelijst met ingebouwde DateTime indelingen te genereren.
Uitbreidbaarheid en beperkingen van datum/tijdtoken
U kunt zoveel tokens () gebruiken als{datetime:<specifier>} u wilt in het padpatroon totdat u de tekenlimiet voor het padvoorvoegsel bereikt. Opmaakaanduidingen kunnen niet worden gecombineerd binnen één token, behalve de combinaties die al in de vervolgkeuzelijsten voor datum en tijd worden vermeld.
Voor een padpartitie van logs/MM/dd:
| Geldige expressie | Ongeldige uitdrukking |
|---|---|
logs/{datetime:MM}/{datetime:dd} |
logs/{datetime:MM/dd} |
U kunt dezelfde opmaakaanduiding meerdere keren gebruiken in het padvoorvoegsel. Het token moet elke keer worden herhaald.
Hive Streaming-conventies
U kunt aangepaste padpatronen gebruiken voor Blob Storage met de Hive Streaming-conventie, waarin wordt verwacht dat mappen worden gelabeld column= met de mapnaam.
Een voorbeeld is year={datetime:yyyy}/month={datetime:MM}/day={datetime:dd}/hour={datetime:HH}.
Aangepaste uitvoer elimineert het wijzigen van tabellen en het handmatig toevoegen van partities aan poortgegevens tussen Stream Analytics en Hive. In plaats daarvan kunnen veel mappen automatisch worden toegevoegd met behulp van:
MSCK REPAIR TABLE while hive.exec.dynamic.partition true
Een met Hive compatibele mapstructuur voor Datum/tijd maken
Maak volgens de Stream Analytics Azure-portal quickstart een opslagaccount, een resourcegroep, een Stream Analytics-taak en een invoerbron aan. Gebruik dezelfde voorbeeldgegevens die in de quickstart worden gebruikt. Voorbeeldgegevens zijn ook beschikbaar in GitHub.
Maak een blob-uitvoersink met de volgende configuratie:
Het volledige padpatroon is:
year={datetime:yyyy}/month={datetime:MM}/day={datetime:dd}
Wanneer u de taak start, wordt er een mapstructuur gemaakt op basis van het padpatroon in uw blobcontainer. U kunt inzoomen op het dagniveau.