Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Azure Stream Analytics stöder partitionering av anpassade blobutdata med anpassade fält eller attribut och anpassade DateTime sökvägsmönster.
Anpassat fält eller attribut
Anpassade fält- eller indataattribut förbättrar arbetsflöden för nedströms databearbetning och rapportering genom att ge mer kontroll över utdata.
Alternativ för partitionsnyckel
Partitionsnyckeln eller kolumnnamnet som används för att partitionera indata kan innehålla alla tecken som accepteras för blobnamn. Du kan inte använda kapslade fält som en partitionsnyckel om du inte använder dem tillsammans med alias. Du kan dock använda vissa tecken för att skapa en hierarki med filer. Om du till exempel vill skapa en kolumn som kombinerar data från två andra kolumner för att skapa en unik partitionsnyckel kan du använda följande fråga:
SELECT name, id, CONCAT(name, "/", id) AS nameid
Partitionsnyckeln måste vara NVARCHAR(MAX), BIGINT, FLOATeller BIT (1.2-kompatibilitetsnivå eller högre). Typerna DateTime, Arrayoch Records stöds inte, men de kan användas som partitionsnycklar om de konverteras till strängar. Mer information finns i Azure Stream Analytics-datatyper.
Partitionera blobutdata efter ett anpassat fält
Anta att ett jobb tar indata från liveanvändarsessioner som är anslutna till en extern videospeltjänst där inmatade data innehåller en kolumn client_id för att identifiera sessionerna. Om du vill partitionera datan efter client_id anger du fältet blob sökvägsmönster till att inkludera en partitionstoken {client_id} i blobutdataegenskaperna när du skapar ett jobb. När data med olika client_id värden flödar genom Stream Analytics-jobbet sparas utdata i separata mappar baserat på ett enda client_id värde per mapp.
Så om jobbinmatningen var sensordata från miljontals sensorer där varje sensor har en sensor_id, skulle sökvägsmönstret vara {sensor_id} för att partitionera varje sensordata till olika mappar.
När du använder REST-API:et kan utdataavsnittet i en JSON-fil som används för den begäran se ut som följande bild:
När jobbet börjar köras kan containern clients se ut som följande bild:
Varje mapp kan innehålla flera blobar där varje blob innehåller en eller flera dataposter. I föregående exempel finns det en enda blob i en mapp märkt "06000000" med följande innehåll:
Observera att varje post i bloben har en client_id kolumn som matchar mappnamnet eftersom kolumnen som användes för att partitionera utdata i utdatasökvägen var client_id.
Begränsningar för anpassad partitionsnyckel
Endast en anpassad partitionsnyckel tillåts i utdataegenskapen för sökvägsmönstret. Alla följande sökvägsmönster är giltiga:
cluster1/{date}/{aFieldInMyData}cluster1/{time}/{aFieldInMyData}cluster1/{aFieldInMyData}cluster1/{date}/{time}/{aFieldInMyData}
Om du vill använda fler än ett indatafält kan du skapa en sammansatt nyckel i en fråga för anpassad sökvägspartitionering i blobutdata genom att använda
CONCAT. Ett exempel ärselect concat (col1, col2) as compositeColumn into blobOutput from input. Sedan kan du angecompositeColumnsom anpassad sökväg i Azure Blob Storage.Partitionsnycklar är skiftlägesokänsliga, så partitionsnycklar som
Johnochjohnär likvärdiga. Du kan inte heller använda uttryck som partitionsnycklar. Till exempel{columnA + columnB}fungerar inte.När en indataström består av poster med en kardinalitet för partitionsnycklar under 8 000 lägger Stream Analytics till posterna i befintliga blobar och skapar bara nya blobar när det behövs. Om kardinaliteten är över 8 000 finns det ingen garanti för att Stream Analytics skriver till befintliga blobar. Stream Analytics skapar inte nya blobar för ett godtyckligt antal poster med samma partitionsnyckel.
Om blobutdata konfigureras som oföränderliga skapar Stream Analytics en ny blob varje gång data skickas.
Anpassade DateTime-sökvägsmönster
Med anpassade DateTime sökvägsmönster kan du ange ett utdataformat som överensstämmer med Hive Streaming-konventioner, vilket ger Stream Analytics möjlighet att skicka data till Azure HDInsight och Azure Databricks för nedströmsbearbetning. Anpassade DateTime sökvägsmönster implementeras enkelt med hjälp av nyckelordet datetime i fältet Sökvägsprefix i blobutdata, tillsammans med formatspecificeraren. Ett exempel är {datetime:yyyy}.
Token som stöds
Följande formatspecifikatortoken kan användas ensamt eller i kombination för att uppnå anpassade DateTime format.
| Formatspecifikation | beskrivning | Resultat vid exempeltid 2018-01-02T10:06:08 |
|---|---|---|
| {datetime:yyyy} | Året som ett fyrsiffrigt tal | 2018 |
| {datetime:MM} | Månad från 01 till 12 | 01 |
| {datetime:M} | Månad från 1 till 12 | 1 |
| {datetime:dd} | Dag från 01 till 31 | 02 |
| {datetime:d} | Dag från 1 till 31 | 2 |
| {datetime:HH} | Timme med 24-timmarsformat, från 00 till 23 | 10 |
| {datetime:mm} | Minuter från 00 till 60 | 06 |
| {datetime:m} | Minuter från 0 till 60 | 6 |
| {datetime:ss} | Sekunder från 00 till 60 | 08 |
Om du inte vill använda anpassade DateTime mönster kan du lägga till {date} och/eller {time} token i fältet Sökvägsprefix för att generera en listruta med inbyggda DateTime format.
Utökningsbarhet och begränsningar för DateTime-token
Du kan använda så många token ({datetime:<specifier>}) som du vill i sökvägsmönstret tills du når sökvägsprefixets teckengräns. Formatspecifikatorer kan inte kombineras inom en enda token, utöver de kombinationer som redan anges av listrutorna för datum och tid.
För en sökvägspartition av logs/MM/dd:
| Giltigt uttryck | Ogiltigt uttryck |
|---|---|
logs/{datetime:MM}/{datetime:dd} |
logs/{datetime:MM/dd} |
Du kan använda samma formatspecificerare flera gånger i sökvägsprefixet. Token måste upprepas varje gång.
Hive Streaming-konventioner
Du kan använda anpassade sökvägsmönster för Blob Storage med Hive Streaming-konventionen, som förväntar sig att mappar ska märkas med column= i mappnamnet.
Ett exempel är year={datetime:yyyy}/month={datetime:MM}/day={datetime:dd}/hour={datetime:HH}.
Anpassade utdata eliminerar besväret med att ändra tabeller och manuellt lägga till partitioner i portdata mellan Stream Analytics och Hive. I stället kan många mappar läggas till automatiskt med hjälp av:
MSCK REPAIR TABLE while hive.exec.dynamic.partition true
Skapa en Hive-kompatibel DateTime-mappstruktur
Skapa ett lagringskonto, en resursgrupp, ett Stream Analytics-jobb och en indatakälla enligt Stream Analytics-Azure Portal snabbstart. Använd samma exempeldata som används i snabbstarten. Exempeldata är också tillgängliga i GitHub.
Skapa en blobutdatamottagare med följande konfiguration:
Det fullständiga sökvägsmönstret är:
year={datetime:yyyy}/month={datetime:MM}/day={datetime:dd}
När du startar jobbet skapas en mappstruktur baserat på sökvägsmönstret i blobcontainern. Du kan öka detaljnivån till dagsnivån.