Egyéni Azure Stream Analytics-blobkimenet particionálása

Az Azure Stream Analytics egyéni mezőkkel vagy attribútumokkal és egyéni DateTime elérésiút-mintákkal támogatja az egyéni blobkimenet particionálását.

Egyéni mező vagy attribútumok

Az egyéni mező- vagy bemeneti attribútumok javítják az alsóbb rétegbeli adatfeldolgozási és jelentéskészítési munkafolyamatokat azáltal, hogy nagyobb mértékben szabályozják a kimenetet.

Partíciókulcs beállításai

A bemeneti adatok particionálásához használt partíciókulcs vagy oszlopnév tartalmazhat a blobnevekhez elfogadott karaktereket. A beágyazott mezők nem használhatók partíciókulcsként, kivéve, ha aliasokkal együtt használják, de bizonyos karakterek használatával fájlhierarchiát hozhat létre. Az alábbi lekérdezéssel például létrehozhat egy oszlopot, amely két másik oszlopból származó adatokat kombinálva egyedi partíciókulcsot hoz létre.

SELECT name, id, CONCAT(name, "/", id) AS nameid

A partíciókulcsnak NVARCHAR(MAX), BIGINT, FLOAT vagy BIT (1.2 kompatibilitási szint vagy magasabb) kell lennie. A DateTime, a Tömb és a Rekord típus nem támogatott, de partíciókulcsként is használható, ha sztringekké konvertálják őket. További információ: Azure Stream Analytics-adattípusok.

Példa

Tegyük fel, hogy egy feladat egy külső videojáték-szolgáltatáshoz csatlakoztatott élő felhasználói munkamenetekből származó bemeneti adatokat vesz fel, ahol a betöltött adatok egy oszlopot tartalmaznak client_id a munkamenetek azonosításához. Az adatok client_id szerinti particionálásához állítsa be a Blob Elérési út mintája mezőt úgy, hogy a feladat létrehozásakor szerepeljen egy partíció jogkivonata ({client_id} ). A különböző client_id értékekkel rendelkező adatok a Stream Analytics-feladaton keresztül haladnak végig, a kimeneti adatok mappánkénti egyetlen client_id érték alapján külön mappákba lesznek mentve.

Elérésiút-minta ügyfél-azonosítóval

Hasonlóképpen, ha a feladat bemenete több millió érzékelő érzékelőadataiból származik, ahol minden érzékelőnek volt egy sensor_id, az elérésiút-minta {sensor_id} lesz, amely az egyes érzékelők adatait különböző mappákba particionálja.

A REST API használatakor a kérelemhez használt JSON-fájl kimeneti szakasza a következő képhez hasonlóan néz ki:

REST API-kimenet

A feladat futásának megkezdése után a tároló a clients következő képhez hasonlóan nézhet ki:

Ügyféltároló

Minden mappa több blobot tartalmazhat, amelyekben minden blob egy vagy több rekordot tartalmaz. A fenti példában egyetlen blob található egy "060000000" címkével ellátott mappában a következő tartalommal:

Blob tartalma

Figyelje meg, hogy a blob minden rekordja rendelkezik egy client_id oszloptal, amely megegyezik a mappa nevével, mivel a kimeneti útvonal kimenetének particionálásához használt oszlop client_id.

Korlátozások

  1. Az Elérési út minta blob kimeneti tulajdonságában csak egy egyéni partíciókulcs engedélyezett. Az alábbi elérésiút-minták mindegyike érvényes:

    • cluster1/{date}/{aFieldInMyData}
    • cluster1/{time}/{aFieldInMyData}
    • cluster1/{aFieldInMyData}
    • cluster1/{date}/{time}/{aFieldInMyData}
  2. Ha az ügyfelek egynél több bemeneti mezőt szeretnének használni, a CONCAT használatával létrehozhatnak egy összetett kulcsot a blobkimenet egyéni elérésiút-partíciójának lekérdezésében. Például: a bemenetből válassza az összefűzést (col1, col2) compositeColumn in blobOutput értékre. Ezután megadhatja a compositeColumn értéket egyéni elérési útként a Blob Storage-ban.

  3. A partíciókulcsok nem érzéketlenek a kis- és nagybetűkre, ezért a partíciókulcsok hasonlóak John és john egyenértékűek. A kifejezések partíciókulcsként sem használhatók. A(z) {columnA + columnB} például nem működik.

  4. Ha egy bemeneti adatfolyam olyan rekordokból áll, amelyek partíciókulcs-számossága 8000 alatt van, a rekordok hozzá lesznek fűzve a meglévő blobokhoz, és csak szükség esetén hoznak létre új blobokat. Ha a számosság meghaladja a 8000-et, nincs garancia arra, hogy a meglévő blobok írása folyamatban van, és nem jönnek létre új blobok tetszőleges számú, azonos partíciókulccsal rendelkező rekordhoz.

  5. Ha a blobkimenet nem módosíthatóként van konfigurálva, a Stream Analytics minden egyes adatküldéskor létrehoz egy új blobot.

Egyéni DateTime-elérésiút-minták

Az egyéni DateTime elérésiút-minták lehetővé teszik a Hive Streaming-konvenciókhoz igazodó kimeneti formátum megadását, így az Azure Stream Analytics képes adatokat küldeni az Azure HDInsightnak és az Azure Databricksnek továbbfeldolgozás céljából. Az egyéni DateTime-elérésiút-minták egyszerűen implementálhatóak a datetime blobkimenet Elérésiút-előtag mezőjében található kulcsszó és a formátumkijelölő használatával. Például: {datetime:yyyy}.

Támogatott jogkivonatok

A következő formátumkijelölő jogkivonatok használhatók önállóan vagy kombinálva az egyéni DateTime-formátumok eléréséhez:

Formátumkijelölő Description Eredmények a 2018-01-02T10:06:08 példaidőn
{datetime:yyyy} Az év négyjegyű számként 2018
{datetime:MM} Hónap 01 és 12 között 01
{datetime:M} Hónap 1 és 12 között 1
{datetime:dd} Nap 01 és 31 között 02
{datetime:d} Nap 1 és 31 között 2
{datetime:HH} Óra 24 órás formátumban, 00 és 23 között 10
{datetime:mm} Percek 00 és 60 között 06
{datetime:m} Percek 0 és 60 között 6
{datetime:ss} Másodperc 00 és 60 között 08

Ha nem szeretne egyéni DateTime-mintákat használni, hozzáadhatja a(z) {date} és/vagy {time} tokent az Elérési út előtaghoz, hogy létrehozhassa a beépített DateTime-formátumokat tartalmazó legördülő listát.

Stream Analytics régi DateTime-formátumok

Bővíthetőség és korlátozások

Annyi tokent használhat, {datetime:<specifier>}amennyit csak szeretne az elérésiút-mintában, amíg el nem éri az Elérési út előtag karakterkorlátját. A formátumkijelölők nem kombinálhatók egyetlen jogkivonaton belül a dátum- és idő legördülő listákban már felsorolt kombinációkon túl.

A következő elérésiút-partícióhoz logs/MM/dd:

Érvényes kifejezés Érvénytelen kifejezés
logs/{datetime:MM}/{datetime:dd} logs/{datetime:MM/dd}

Ugyanazt a formátumkijelölőt többször is használhatja az Elérési út előtagban. A jogkivonatot minden alkalommal meg kell ismételni.

Hive Streaming-konvenciók

A Blob Storage egyéni elérésiút-mintái a Hive Streaming-konvencióval használhatók, amely elvárja, hogy a mappák címkéje column= szerepeljen a mappanévben.

Például: year={datetime:yyyy}/month={datetime:MM}/day={datetime:dd}/hour={datetime:HH}.

Az egyéni kimenet kiküszöböli a táblák módosítását és a partíciók manuális hozzáadását az Azure Stream Analytics és a Hive közötti portadatokhoz. Ehelyett számos mappa adható hozzá automatikusan a következő használatával:

MSCK REPAIR TABLE while hive.exec.dynamic.partition true

Példa

Hozzon létre egy tárfiókot, egy erőforráscsoportot, egy Stream Analytics-feladatot és egy bemeneti forrást az Azure Stream Analytics Azure Portal rövid útmutató alapján. Használja ugyanazokat a mintaadatokat, amelyeket a rövid útmutatóban is használt, a GitHubon is.

Hozzon létre egy blobkimeneti fogadót a következő konfigurációval:

A Stream Analytics blobkimeneti fogadó létrehozása

A teljes útvonalminta a következő:

year={datetime:yyyy}/month={datetime:MM}/day={datetime:dd}

A feladat indításakor a blobtárolóban létrejön egy elérésiút-minta alapján létrehozott mappastruktúra. Lehatolást végezhet a napi szintig.

Stream Analytics-blobkimenet egyéni útvonalmintával

Következő lépések