Megosztás:


Referenciaadatok használata keresésekhez a Stream Analyticsben

A referenciaadatok olyan véges adatkészletek, amelyek statikusan vagy lassan változnak a természetben. Egy keresés végrehajtására vagy az adatfolyamok bővítésére szolgál. A referenciaadatok keresési táblaként is ismertek.

Példaként vegyünk egy IoT-forgatókönyvet. A referenciaadatokban tárolhatja az érzékelők metaadatait, amelyek nem változnak gyakran. Ezután összekapcsolhatja valós idejű IoT-adatfolyamokkal.

Az Azure Stream Analytics a memóriában betölti a referenciaadatokat az alacsony késleltetésű streamfeldolgozás érdekében. Ha referenciaadatokat szeretne használni a Stream Analytics feladatában, a lekérdezésben általában egy referenciaadat-illesztést fog használni.

Példa

Valós idejű eseményfolyamot hozhat létre, amikor az autók áthaladnak egy útdíjkapun. A tollbooth képes rögzíteni a rendszámokat valós időben. Az adatok összekapcsolhatók egy statikus adatkészlettel, amely regisztrációs adatokkal rendelkezik a lejárt rendszámok azonosításához.

SELECT I1.EntryTime, I1.LicensePlate, I1.TollId, R.RegistrationId  
FROM Input1 I1 TIMESTAMP BY EntryTime  
JOIN Registration R  
ON I1.LicensePlate = R.LicensePlate  
WHERE R.Expired = '1'

A Stream Analytics a referenciaadatok tárolási rétegeként támogatja az Azure Blob Storage-t, az Azure Data Lake Storage Gen2-t és az Azure SQL Database-t. Ha más adattárakban található referenciaadatokkal rendelkezik, próbálja meg az Azure Data Factory használatával kinyerni, átalakítani és betölteni az adatokat az egyik támogatott adattárba. További információért lásd: Másolási tevékenység az Azure Data Factory áttekintésében.

Azure Blob Storage vagy Azure Data Lake Storage Gen 2

A referenciaadatok blobok sorozataként, növekvő sorrendben, a blob nevében megadott dátum/idő sorrendben modelleződnek. A blobok csak a sorozat utolsó blobja által megadott dátum/idő nagyobb használatával vehetők fel a sorozat végére. A blobok a bemeneti konfigurációban vannak definiálva.

További információ: A Blob Storage referenciaadatainak használata Stream Analytics-feladathoz.

Blobhivatkozási adatok konfigurálása

A referenciaadatok beállításához először létre kell hoznia egy referenciaadat típusúbemeneti elemet. Az alábbi táblázat ismerteti azokat a tulajdonságokat, amelyekre a referenciaadat-bemenet leírásával való létrehozásakor szüksége van.

Tulajdonság neve Leírás
Bemeneti alias A feladat lekérdezésében a bemenetre való hivatkozáshoz használt barátságos név.
Tároló fiók Annak a tárfióknak a neve, ahol a blobok találhatók. Ha ugyanabban az előfizetésben van, mint a Stream Analytics-feladat, válassza ki a legördülő listából.
Tárfiók kulcsa A tárfiókhoz társított titkos kulcs. Ez a kulcs automatikusan fel lesz töltve, ha a tárfiók ugyanabban az előfizetésben van, mint a Stream Analytics-feladat.
Tároló edény A tárolók logikai csoportosítást biztosítanak a Blob Storage-ban tárolt blobokhoz. Amikor feltölt egy blobot a Blob Storage-ba, meg kell adnia egy tárolót a blobhoz.
Elérésiút-minta Ez a szükséges tulajdonság a blobok a megadott tárolóban való megkeresésére szolgál. Az útvonalon belül megadhat egy vagy több példányt a(z) {date} és {time} változókból.
1. példa: termékek/{date}/{time}/product-list.csv
2. példa: termékek/{date}/product-list.csv
3. példa: product-list.csv

Ha a blob nem létezik a megadott elérési úton, a Stream Analytics-feladat határozatlan ideig várja, amíg a blob elérhetővé válik.
Dátumformátum [nem kötelező] Ha a megadott elérésiút-mintán belül {date} értéket használt, válassza ki azt a dátumformátumot, amelyben a blobok a támogatott formátumok legördülő listájából vannak rendezve.
Példa: YYYY/MM/DD vagy MM/DD/YYYY
Időformátum [nem kötelező] Ha a megadott elérésiút-mintán belül {time} értéket használt, válassza ki azt az időformátumot, amelyben a blobok a támogatott formátumok legördülő listájából vannak rendezve.
Példa: HH, HH/mm vagy HH-mm
Esemény szerializálási formátuma Annak érdekében, hogy a lekérdezések a várt módon működjenek, a Stream Analyticsnek tudnia kell, hogy milyen szerializálási formátumot használ a bejövő adatfolyamokhoz. Referenciaadatok esetén a támogatott formátumok a CSV és a JSON.
Encoding Jelenleg az UTF-8 az egyetlen támogatott kódolási formátum.

Statikus referenciaadatok

Előfordulhat, hogy a referenciaadatok nem változnak. A statikus referenciaadatok támogatásának engedélyezéséhez adjon meg egy statikus elérési utat a bemeneti konfigurációban.

A Stream Analytics a megadott elérési útról veszi fel a blobot. A(z) {date} és {time} helyettesítési tokenek nem szükségesek. Mivel a referenciaadatok nem módosíthatók a Stream Analyticsben, a statikus referenciaadat-blob felülírása nem ajánlott.

Referenciaadatok létrehozása ütemezés szerint

A referenciaadatok lassan változó adatkészletek lehetnek. A referenciaadatok frissítéséhez adjon meg egy útvonalmintát a bemeneti konfigurációban a {date} és a {time} helyettesítési tokenek használatával. A Stream Analytics az elérési út mintája alapján felveszi a frissített referenciaadat-definíciókat.

Például a sample/{date}/{time}/products.csv mintája, amely YYYY-MM-DD dátumformátummal és HH-mm időformátummal rendelkezik, arra utasítja a Stream Analytics-t, hogy vegye fel a frissített blob sample/2015-04-16/17-30/products.csv-t 2015. április 16-án, 17:30-kor (UTC) időpontban.

A Stream Analytics automatikusan egyperces időközönként ellenőrzi a frissített referenciaadat-blobokat. Előfordulhat, hogy egy 10:30:00-s időbélyeggel rendelkező blob kis késéssel, például 10:30:30-mal tölthető fel. Kis késést tapasztal a blobra hivatkozó Stream Analytics-feladatban.

Az ilyen helyzetek elkerülése érdekében töltse fel a blobot a célnál korábbi tényleges időpontnál, ami ebben a példában 10:30:00. A Stream Analytics-feladatnak most már elegendő ideje van a blob felderítésére és betöltésére a memóriában, és műveleteket hajthat végre.

Megjegyzés

A Stream Analytics-feladatok jelenleg csak akkor keresik a blob frissítést, ha a rendszeridő előrelép a blob nevében kódolt időre. A feladat például a lehető leghamarabb, de nem korábban mint 2015. április 16-án, 17:30-kor (UTC) keresi a sample/2015-04-16/17-30/products.csv-t. Soha nem fog olyan blobot keresni, amelynek kódolt ideje korábbi, mint a legutóbb felfedezett.

Ha például a feladat megtalálta a blob sample/2015-04-16/17-30/products.csv, figyelmen kívül hagyja a 2015. április 16-nál korábbi kódolt dátumú fájlokat 17:30-kor. Ha egy későn érkező sample/2015-04-16/17-25/products.csv blob ugyanabban a tárolóban jön létre, a feladat nem fogja használni.

Egy másik példában a sample/2015-04-16/17-30/products.csv csak 2015. április 16-án, 10:03-kor állítják elő, de a tárolóban nincs egy korábbi dátumú blob. Ezután a feladat ezt a fájlt használja 2015. április 16-án 10:03-kor, és az addigi referenciaadatokat használja.

Ez alól a viselkedés alól kivételt képez az, ha a feladatnak újra kell feldolgoznia az adatokat időben vagy a feladat első indításakor.

Kezdéskor a feladat a feladat kezdési időpontja előtt létrehozott legújabb blobot keresi. Ez a viselkedés biztosítja, hogy a feladat indításakor legyen egy nem üres referenciaadatkészlet. Ha nem található ilyen, a feladat a következő diagnosztikát jeleníti meg: Initializing input without a valid reference data blob for UTC time <start time>.

Referenciaadatkészlet frissítésekor a rendszer diagnosztikai naplót hoz létre: Loaded new reference data from <blob path>. Számos okból előfordulhat, hogy egy feladatnak újra kell betöltenie egy korábbi referenciaadatkészletet. Leggyakrabban a múltbeli adatok újrafeldolgozása az oka. Ekkor jön létre ugyanaz a diagnosztikai napló. Ez a művelet nem jelenti azt, hogy az aktuális streamadatok múltbeli referenciaadatokat használnak.

Azure Data Factory használható a Stream Analytics által a referenciaadat-definíciók frissítéséhez szükséges frissített blobok létrehozására.

A Data Factory egy felhőalapú adatintegrációs szolgáltatás, amely koordinálja és automatizálja az adatok áthelyezését és átalakítását. A Data Factory támogatja nagy számú felhőalapú és helyszíni adattárhoz való csatlakozást. Az adatok egyszerűen áthelyezhetők az Ön által megadott rendszeres ütemezés szerint.

Ha többet szeretne tudni arról, hogyan állíthat be egy Data Factory-folyamatot az előre meghatározott ütemezés szerint frissülő Stream Analytics referenciaadatainak létrehozásához, tekintse meg ezt a GitHub-minta.

Tippek a blobreferenciák adatainak frissítésével kapcsolatban

  • Ne írja felül a referenciaadat-blobokat, mert nem módosíthatók.
  • A referenciaadatok frissítésének ajánlott módja a következő:
    • Használja a(z) {date}/{time} formátumot az elérési út mintájában.
    • Adjon hozzá egy új blobot ugyanazzal a tárolóval és elérési útmintával, amelyet a feladat bemenetében definiált.
    • Használjon olyan dátumot/időt , amely legyen nagyobb, mint amit a sorozat utolsó blobja határoz meg.
  • A referenciaadat-blobokat nem* a blob legutóbb módosított ideje rendezi. A rendszer csak a blob nevében megadott dátum és idő alapján rendezi őket a(z) {date} és {time} helyettesítések használatával.
  • A nagy számú blob listázásának elkerülése érdekében törölje a régi blobokat, amelyek feldolgozását a továbbiakban nem végzi el. Előfordulhat, hogy a Stream Analyticsnek bizonyos esetekben, például újraindítás esetén újra kell dolgoznia egy kis mennyiséget.

Azure SQL Database

A Stream Analytics-feladat lekéri az SQL Database referenciaadatait, és pillanatképként tárolja a memóriában feldolgozás céljából. A referenciaadatok pillanatképét egy tárfiókban lévő tárolóban is tárolja a rendszer. A tárfiókot a konfigurációs beállítások között adhatja meg.

A tároló automatikusan létrejön a feladat indításakor. Ha a feladat leáll vagy sikertelen állapotba kerül, az automatikusan létrehozott tárolók törlődnek a feladat újraindításakor.

Ha a referenciaadatok lassan változó adatkészletek, rendszeresen frissítenie kell a feladatban használt pillanatképet.

A Stream Analytics használatával beállíthatja a frissítési sebességet az SQL Database bemeneti kapcsolatának konfigurálásakor. A Stream Analytics-futtatókörnyezet a frissítési gyakoriság által megadott időközönként lekérdezi az SQL Database-példányt. A támogatott leggyorsabb frissítési sebesség percenként egyszer érhető el. Minden frissítéshez a Stream Analytics egy új pillanatképet tárol a megadott tárfiókban.

A Stream Analytics két lehetőséget biztosít az SQL Database-példány lekérdezésére. A pillanatkép-lekérdezés kötelező, és minden feladatban szerepelnie kell. A Stream Analytics rendszeres időközönként futtatja a pillanatkép-lekérdezést a frissítési időköz alapján. Referenciaadatkészletként a lekérdezés eredményét (a pillanatképet) használja.

A pillanatkép-lekérdezésnek a legtöbb forgatókönyvhöz illeszkednie kell. Ha nagy adathalmazokkal és gyors frissítési gyakorisággal kapcsolatos teljesítményproblémákba ütközik, használja a delta lekérdezési lehetőséget. A referenciaadatkészlet visszaadásához több mint 60 másodpercet igénylő lekérdezések időtúllépést eredményeznek.

A delta lekérdezési beállítással a Stream Analytics kezdetben futtatja a pillanatkép-lekérdezést egy alapkonfigurációs referenciaadatkészlet lekéréséhez. Ezt követően a Stream Analytics rendszeres időközönként futtatja a delta lekérdezést a frissítési időköz alapján a növekményes módosítások lekéréséhez. Ezeket a növekményes módosításokat a rendszer folyamatosan alkalmazza a referenciaadatkészletre a frissítésük érdekében. A delta lekérdezési lehetőség használata segíthet csökkenteni a tárolási költségeket és a hálózati I/O-műveleteket.

SQL Database-referenciaadatok konfigurálása

Az SQL Database referenciaadatainak konfigurálásához először referenciaadat-bemenetet kell létrehoznia. Az alábbi táblázat ismerteti azokat a tulajdonságokat, amelyekre a referenciaadat-bemenet leírásával való létrehozásakor szüksége van. További információ: Sql Database referenciaadatainak használata Stream Analytics-feladathoz.

Azure SQL Felügyelt példány referenciadat-bemenetként használható. Nyilvános végpontot konfigurálni a felügyelt SQL-példányban. Ezután manuálisan konfigurálja a következő beállításokat a Stream Analyticsben. Ezen beállítások manuális konfigurálásával egy SQL Servert futtató Azure-beli virtuális gép is támogatott, amelyhez adatbázis van csatolva.

Tulajdonság neve Leírás
Bemeneti alias A feladat lekérdezésében a bemenetre való hivatkozáshoz használt barátságos név.
Előfizetés A te előfizetésed.
Adatbázis A referenciaadatokat tartalmazó SQL Database-példány. SQL Felügyelt Példány esetén meg kell adnia a 3342-es portot. Például: sampleserver.public.database.windows.net,3342.
Felhasználónév Az SQL Database-példányhoz társított felhasználónév.
Jelszó Az SQL Database-példányhoz társított jelszó.
Rendszeres frissítés Ezzel a beállítással kiválaszthatja a frissítési sebességet. Válassza a lehetőséget a DD:HH:MM frissítési gyakoriságának megadásához.
Pillanatkép-lekérdezés Ez az alapértelmezett lekérdezési beállítás lekéri a referenciaadatokat az SQL Database-példányból.
Delta-lekérdezés A nagy adathalmazokkal és rövid frissítési gyakorisággal rendelkező speciális forgatókönyvekhez adjon hozzá egy delta lekérdezést.

Méretkorlátozás

A legjobb teljesítmény érdekében 300 MB-nál kisebb referenciaadatkészleteket használjon. A legfeljebb 5 GB méretű referenciaadatkészleteket támogatják olyan feladatokban, amelyekben hat vagy több streamelő egység van. A nagy referenciaadatkészlet használata hatással lehet a feladat végpontok közötti késésére.

A lekérdezések összetettsége növelheti az állapotalapú feldolgozást, például az ablakos összesítéseket, az időbeli illesztéseket és az időbeli elemzési függvényeket. Ha az összetettség növekszik, a referenciaadatok maximális támogatott mérete csökken.

Ha a Stream Analytics nem tudja betölteni a referenciaadatokat, és összetett műveleteket hajt végre, a feladat elfogy a memóriából, és sikertelen lesz. Ilyen esetekben a streamelési egység százalékos kihasználtsági mutatója eléri a 100%.

Streamelési egységek száma Javasolt méret
1 50 MB vagy alacsonyabb
3 150 MB vagy alacsonyabb
6 és azon felül 5 GB vagy alacsonyabb

A tömörítés támogatása nem érhető el referenciaadatokhoz. A 300 MB-nál nagyobb referenciaadatkészletek esetében használja az SQL Database-t forrásként a delta lekérdezési lehetőséggel az optimális teljesítmény érdekében. Ha az ilyen helyzetekben nem használja a delta lekérdezési beállítást, a referenciaadatkészlet frissítésekor a vízjel késleltetési metrikájában csúcsok jelennek meg.

Több referenciaadatkészlet összekapcsolása egy feladatban

A referenciaadat-bemeneteket csak streambemenethez csatlakoztathatja. Ha több referenciaadatkészletet szeretne összekapcsolni, bontsa fel a lekérdezést több lépésre. Íme egy példa:

With Step1 as (
    --JOIN input stream with reference data to get 'Desc'
    SELECT streamInput.*, refData1.Desc as Desc
    FROM    streamInput
    JOIN    refData1 ON refData1.key = streamInput.key 
)
--Now Join Step1 with second reference data
SELECT *
INTO    output 
FROM    Step1
JOIN    refData2 ON refData2.Desc = Step1.Desc 

IoT Edge-feladatok

A Stream Analytics peremhálózati feladatai csak a helyi referenciaadatokat támogatják. Amikor egy feladat egy IoT Edge-eszközön van üzembe helyezve, a felhasználó által megadott fájl elérési útjáról tölti be a referenciaadatokat. Készítse fel a referenciaadat-fájlt az eszközön.

Windows-tároló esetén helyezze a referenciaadatfájlt a helyi meghajtóra, és ossza meg a helyi meghajtót a Docker-tárolóval. Linux-tároló esetén hozzon létre egy Docker-kötetet, és töltse fel az adatfájlt a kötetbe.

Az IoT Edge-frissítés referenciaadatait egy üzembe helyezés aktiválja. Az aktiválás után a Stream Analytics-modul a futó feladat leállítása nélkül választja ki a frissített adatokat.

A referenciaadatok kétféleképpen frissíthetők:

  • Frissítse a Stream Analytics-feladat referenciaadat-elérési útját az Azure Portalról.
  • Frissítse az IoT Edge üzembe helyezését.

Következő lépések