Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a referenciaarchitektúra egy végpontok közötti streamfeldolgozási folyamatot mutat be. A folyamat négy szakasza magában foglalja a betöltést, a feldolgozást, a tárolást, valamint az elemzést és a jelentést. Ebben a referenciaarchitektúrában a folyamat két forrásból betölti az adatokat, összekapcsolja az egyes streamekből származó kapcsolódó rekordokat, gazdagítja az eredményt, és valós időben kiszámítja az átlagot. Az eredményeket ezután a rendszer további elemzés céljából tárolja.
Architektúra
Töltsön le egy Visio-fájlt az architektúráról.
Adatfolyam
Az alábbi adatfolyam az előző diagramnak felel meg:
Ingest
Két valós idejű operatív adatfolyam táplálja a rendszert: a viteldíjadatokat és az utazási adatokat. A taxifülkékben telepített eszközök adatforrásként szolgálnak, és eseményeket tesznek közzé az Azure Event Hubsban. Minden stream a saját eseményközpont-példányára kerül, amely független betöltési útvonalakat biztosít.
Folyamat
Az Azure Databricks mindkét Event Hubs-streamet felhasználja, és a következő műveleteket futtatja:
- A viteldíjrekordok korrelációja az utazási rekordokkal
- Bővíti az adatokat egy harmadik adatkészlettel, amely az Azure Databricks fájlrendszerben tárolt környékbeli keresési adatokat tartalmazza
Ez a folyamat egy egységes, bővített adatkészletet hoz létre, amely alkalmas az alsóbb rétegbeli elemzésekhez és tároláshoz.
Üzlet
Az Azure Databricks-feladatok kimenete rekordsorozat. A feldolgozott rekordok az Azure Cosmos DB for NoSQL-be vannak írva.
Elemzés/jelentés
A Fabric az Azure Cosmos DB for NoSQL működési adatait tükrözi az elemzési lekérdezések engedélyezéséhez a tranzakciós teljesítmény befolyásolása nélkül. Ez a megközelítés nem ETL elérési utat biztosít az elemzéshez. Ebben az architektúrában a tükrözést a következő célokra használhatja:
- Azure Cosmos DB-adatok (vagy Delta-formátumú adatok) tükrözése a Fabricbe
- Adathalmazok szinkronizálása az operatív rendszerrel
- Az elemzés engedélyezése az alábbi eszközökkel:
- Fabric SQL Analytics-végpontok tóházakhoz és raktárakhoz
- Apache Spark-jegyzetfüzetek
- Valós idejű elemzés a Kusto Query Language (KQL) használatával idősorozatok és naplóstílusok feltárásához
Monitor
Az Azure Monitor telemetriát gyűjt az Azure Databricks feldolgozási folyamatából. A Log Analytics-munkaterületek alkalmazásnaplókat és metrikákat tárolnak. A következő műveleteket hajthatja végre:
- Működési naplók lekérdezése
- Metrikák vizualizációja
- Hibák, rendellenességek és teljesítményproblémák vizsgálata
- Irányítópultok létrehozása
Components
Az Azure Databricks egy Azure-platformra optimalizált Spark-alapú elemzési platform. Ebben az architektúrában az Azure Databricks-feladatok bővítik a taxiút és a viteldíjak adatait, és az eredményeket az Azure Cosmos DB-ben tárolják.
Az Event Hubs egy felügyelt, elosztott betöltési szolgáltatás, amely nagy mennyiségű esemény betöltésére skálázható. Ez az architektúra két eseményközpont-példányt használ az adatok taxiktól való fogadásához.
Az Azure Cosmos DB for NoSQL egy felügyelt, többmodelles adatbázis-szolgáltatás. Ebben az architektúrában az Azure Databricks bővítési feladatainak kimenetét tárolja. A Fabric az Azure Cosmos DB működési adatait tükrözi az elemzési lekérdezések engedélyezéséhez.
A Log Analytics egy eszköz az Azure Monitoron belül, amely segít a különböző forrásokból származó naplóadatok lekérdezésében és elemzésében. Ebben az architektúrában minden erőforrás úgy konfigurálja az Azure Diagnosticst, hogy platformnaplókat tároljon ezen a munkaterületen. A munkaterület adatgyűjtőként is szolgál az Azure Databricks feldolgozási folyamataiból kibocsátott Spark-feladatmetrikákhoz.
Forgatókönyv részletei
A taxitársaság minden taxiútról gyűjt adatokat. Ebben a forgatókönyvben feltételezzük, hogy két különálló eszköz küld adatokat. A taxiban van egy mérőóra, amely információkat küld az egyes utazásokról, beleértve az időtartamot, a távolságot, a felvételi és leadási helyeket. Egy külön eszköz fogadja az ügyfelektől érkező kifizetéseket, és adatokat küld a viteldíjakról. A ridership trendek észlelése érdekében a taxitársaság valós időben szeretné kiszámítani az egyes környékek átlagos, mérföldenkénti tippjeit.
Adatok betöltése
Az adatforrás szimulálásához ez a referenciaarchitektúra a New York-i taxiadatkészletet használja. Ez az adatkészlet a 2010 és 2013 közötti New York-i taxiutak adatait tartalmazza. Utazási és viteldíj adatokat is tartalmaz. Az utazási adatok tartalmazzák az utazás időtartamát, az utazás távolságát, valamint a felvétel és lerakás helyszíneit. A viteldíjadatok tartalmazzák a viteldíjakat, az adó- és a tippösszegeket. Mindkét rekordtípus mezői közé tartozik a medálszám, a feltört licenc és a szállító azonosítója. A három mező kombinációja egyedileg azonosítja a taxit és a sofőrt. Az adatok CSV formátumban lesznek tárolva.
Az adatgenerátor egy .NET alkalmazás, amely beolvassa a rekordokat, és elküldi őket az Event Hubsnak. A generátor JSON formátumban küldi el az utazási adatokat, a menetdíjakat pedig CSV formátumban.
Az Event Hubs partíciókkal szegmentálta az adatokat. A partíciók lehetővé teszik a felhasználók számára az egyes olvasási adatok párhuzamos olvasását. Amikor adatokat küld az Event Hubsnak, közvetlenül megadhatja a partíciókulcsot. Ellenkező esetben a rekordok körbe haladó módon vannak hozzárendelve a partíciókhoz.
Ebben az esetben a menetadatoknak és a viteldíjadatoknak ugyanazt a partícióazonosítót kell hozzárendelni egy adott taxifülkéhez. Ez a hozzárendelés lehetővé teszi, hogy a Databricks bizonyos fokú párhuzamosságot alkalmazzon a két stream korrelációja esetén. Például a partícióban lévő rekord n a menetdíj-adatok n partícióban lévő rekordnak felel meg.
Töltse le az architektúra Visio-fájlját.
Az adatgenerátorban mindkét rekordtípushoz tartozó közös adatmodell tartalmaz egy olyan PartitionKey tulajdonságot, amely a Medallion, HackLicense és VendorId összefűzéséből áll.
public abstract class TaxiData
{
public TaxiData()
{
}
[JsonProperty]
public long Medallion { get; set; }
[JsonProperty]
public long HackLicense { get; set; }
[JsonProperty]
public string VendorId { get; set; }
[JsonProperty]
public DateTimeOffset PickupTime { get; set; }
[JsonIgnore]
public string PartitionKey
{
get => $"{Medallion}_{HackLicense}_{VendorId}";
}
Ez a tulajdonság explicit partíciókulcsot biztosít, amikor adatokat küld az Event Hubsnak.
using (var client = pool.GetObject())
{
return client.Value.SendAsync(new EventData(Encoding.UTF8.GetBytes(
t.GetData(dataFormat))), t.PartitionKey);
}
Event Hubs
Az Event Hubs átviteli kapacitását átviteli egységekben mérik. Az automatikus bővítés engedélyezésével automatikusan skálázhatja az eseményközpontot. Ez a funkció automatikusan skálázza az átviteli egységeket a forgalom alapján, egy konfigurált maximális értékre.
Folyamfeldolgozás
Az Azure Databricksben egy feladat adatfeldolgozást végez. A feladatot hozzárendelik egy fürthöz, majd azon fut. A feladat lehet java nyelven írt egyéni kód, vagy Spark jegyzetfüzet.
Ebben a referenciaarchitektúrában a feladat egy Java-archívum, amely Java és Scala nyelven írt osztályokkal rendelkezik. Amikor megadja egy Azure Databricks-feladat Java-archívumát, az Azure Databricks-fürt megadja a művelet osztályát. Itt az maincom.microsoft.pnp.TaxiCabReader osztály metódusa tartalmazza az adatfeldolgozási logikát.
A stream beolvasása a két eseményközpont-példányból
Az adatfeldolgozási logika Spark strukturált streamelést használ a két Azure-eseményközpont-példányból való olvasáshoz:
// Create a token credential using Managed Identity
val credential = new DefaultAzureCredentialBuilder().build()
val rideEventHubOptions = EventHubsConf(rideEventHubEntraIdAuthConnectionString)
.setTokenProvider(EventHubsUtils.buildTokenProvider(..., credential))
.setConsumerGroup(conf.taxiRideConsumerGroup())
.setStartingPosition(EventPosition.fromStartOfStream)
val rideEvents = spark.readStream
.format("eventhubs")
.options(rideEventHubOptions.toMap)
.load
val fareEventHubOptions = EventHubsConf(fareEventHubEntraIdAuthConnectionString)
.setTokenProvider(EventHubsUtils.buildTokenProvider(..., credential))
.setConsumerGroup(conf.taxiFareConsumerGroup())
.setStartingPosition(EventPosition.fromStartOfStream)
val fareEvents = spark.readStream
.format("eventhubs")
.options(fareEventHubOptions.toMap)
.load
Az adatok bővítése a környék információival
A menetadatok tartalmazzák a felvételi és a legördülő helyek szélességi és hosszúsági koordinátáit. Ezek a koordináták hasznosak, de nem könnyen használhatók elemzéshez. A folyamat tehát egy alakzatfájlból beolvasott szomszédsági adatokkal bővíti ezeket az adatokat.
Az alakzatfájl formátuma bináris, és nem könnyen elemezhető. A GeoTools könyvtár azonban az alakzatfájl formátumát használó térinformatikai adatokhoz biztosít eszközöket. Ez a könyvtár a com.microsoft.pnp.GeoFinder osztályban van használva, hogy a környék nevét meghatározhassa a felvételi és lerakási helyek koordinátái alapján.
val neighborhoodFinder = (lon: Double, lat: Double) => {
NeighborhoodFinder.getNeighborhood(lon, lat).get()
}
Csatlakozás az utazáshoz és a viteldíjadatokhoz
Először a menet- és viteldíjadatok lesznek átalakítva:
val rides = transformedRides
.filter(r => {
if (r.isNullAt(r.fieldIndex("errorMessage"))) {
true
}
else {
malformedRides.add(1)
false
}
})
.select(
$"ride.*",
to_neighborhood($"ride.pickupLon", $"ride.pickupLat")
.as("pickupNeighborhood"),
to_neighborhood($"ride.dropoffLon", $"ride.dropoffLat")
.as("dropoffNeighborhood")
)
.withWatermark("pickupTime", conf.taxiRideWatermarkInterval())
val fares = transformedFares
.filter(r => {
if (r.isNullAt(r.fieldIndex("errorMessage"))) {
true
}
else {
malformedFares.add(1)
false
}
})
.select(
$"fare.*",
$"pickupTime"
)
.withWatermark("pickupTime", conf.taxiFareWatermarkInterval())
Ezután a menetadatok a viteldíjadatokkal lesznek összekapcsolva:
val mergedTaxiTrip = rides.join(fares, Seq("medallion", "hackLicense", "vendorId", "pickupTime"))
Az adatok feldolgozása és beszúrása az Azure Cosmos DB-be
Az egyes környékek átlagos viteldíj-összegét egy adott időintervallumra számítjuk ki:
val maxAvgFarePerNeighborhood = mergedTaxiTrip.selectExpr("medallion", "hackLicense", "vendorId", "pickupTime", "rateCode", "storeAndForwardFlag", "dropoffTime", "passengerCount", "tripTimeInSeconds", "tripDistanceInMiles", "pickupLon", "pickupLat", "dropoffLon", "dropoffLat", "paymentType", "fareAmount", "surcharge", "mtaTax", "tipAmount", "tollsAmount", "totalAmount", "pickupNeighborhood", "dropoffNeighborhood")
.groupBy(window($"pickupTime", conf.windowInterval()), $"pickupNeighborhood")
.agg(
count("*").as("rideCount"),
sum($"fareAmount").as("totalFareAmount"),
sum($"tipAmount").as("totalTipAmount"),
(sum($"fareAmount")/count("*")).as("averageFareAmount"),
(sum($"tipAmount")/count("*")).as("averageTipAmount")
)
.select($"window.start", $"window.end", $"pickupNeighborhood", $"rideCount", $"totalFareAmount", $"totalTipAmount", $"averageFareAmount", $"averageTipAmount")
Az átlagos viteldíj összege ezután be lesz szúrva az Azure Cosmos DB-be:
maxAvgFarePerNeighborhood
.writeStream
.format("cosmos.oltp")
.option("spark.cosmos.accountEndpoint", "<your-cosmos-endpoint>")
.option("spark.cosmos.accountKey", "<your-cosmos-key>")
.option("spark.cosmos.database", "<your-database-name>")
.option("spark.cosmos.container", "<your-container-name>")
.option("checkpointLocation", "/mnt/checkpoints/maxAvgFarePerNeighborhood")
.outputMode("append")
.start()
.awaitTermination()
Megfontolások
Ezek a szempontok implementálják az Azure Well-Architected Framework alappilléreit, amely a számítási feladatok minőségének javítására használható vezérelvek készlete. További információ: Well-Architected Framework.
Biztonság
A biztonság biztosítékokat nyújt a szándékos támadások és az értékes adatokkal és rendszerekkel való visszaélés ellen. További információ: Biztonságitervezési felülvizsgálati ellenőrzőlistája.
Az Azure Databricks-munkaterülethez való hozzáférést a rendszergazdai konzol használatával van szabályozva. A rendszergazdai konzol olyan funkciókat tartalmaz, amelyek lehetővé teszi a felhasználók hozzáadását, a felhasználói engedélyek kezelését és az egyszeri bejelentkezés beállítását. A munkaterületek, fürtök, feladatok és táblák hozzáférés-vezérlése a rendszergazdai konzolon is beállítható.
Titkos kulcsok kezelése
Az Azure Databricks tartalmaz egy titkos tárat, amely a hitelesítő adatok tárolására és a jegyzetfüzetekben és feladatokban való hivatkozásra szolgál. Hatókörök particionálási titkos kulcsai az Azure Databricks titkos tárolóban:
databricks secrets create-scope --scope "azure-databricks-job"
A titkos kulcsok a hatókör szintjén vannak hozzáadva:
databricks secrets put --scope "azure-databricks-job" --key "taxi-ride"
Feljegyzés
A natív Azure Databricks-hatókör helyett használjon Azure Key Vault-alapú hatókört.
A kód az Azure Databricks titkos kulcsok segédprogramjaival fér hozzá a titkos kódokhoz.
PaaS-erőforrásokhoz való hálózati hozzáférés korlátozása
Ez az architektúra Azure hálózati biztonsági szegélyt használ az Event Hubshoz való hozzáférés korlátozására. Társítsa a(z) Microsoft.EventHub/namespaces elemet egy megosztott peremhálózathoz, és alapértelmezés szerint tiltsa le a nyilvános forgalmat.
Ez a vezérlő csak a betöltési útvonal fogyasztói oldalát védi. A hálózati biztonsági szegély a bejövő és a kimenő hozzáférési szabályokat is meghatározza. A bejövő szabályok szabályozzák, hogy mely hívók érhetik el a peremhálózati tagokat, és két típust támogatnak: előfizetés-alapú és IP-alapú. A kimenő szabályok azt szabályozzák, hogy a peremhálózati tagok mely külső célhelyeket érhetik el, és csak teljes tartománynév-alapúak. Mivel ebben a forgatókönyvben az Event Hubs a peremhálózat tagja, a bejövő szabályok határozzák meg, hogy mely gyártók és fogyasztók engedélyezettek.
A cikk nem határozza meg, hogy hol futnak a taxieszközök vagy az őket szimuláló .NET adatgenerátor, illetve hogy rögzített vagy ismert nyilvános IP-címtartományuk van-e. Ha egy ismert előfizetésben Azure erőforrásként futnak, egy előfizetés-alapú bejövő szabály engedélyezheti őket. Ha ehelyett rögzített IP-címtartományt használnak, egy IP-alapú bejövő szabály engedélyezheti ezt a tartományt. A szabálytípus kiválasztása előtt ellenőrizze a gyártók tényleges eredetét és hálózati jellemzőit.
Azure Cosmos DB hálózati biztonsági szegély támogatása nyilvános előzetes verzióban érhető el.
Ez az architektúra nem telepíti a Azure Databricks munkaterületet egyéni virtuális hálózatba (VNet-injektálás), így a munkaterület nem rendelkezik statikus kimenő IP-címmel. A Databricks-ügyfélútvonal esetében az Event Hubs bejövő hozzáférési szabályát az IP-címtartomány helyett előfizetések (a Azure Databricks munkaterületet üzemeltető előfizetés) szerint kell korlátozni, amelyhez stabil, ismert forrás IP-cím szükséges.
Alternatív megoldásként privát végpontokat is használhat az Event Hubshoz. Ez a megközelítés eltávolítja az Event Hubs nyilvános végponthoz való hozzáférését, és magánhálózati DNS- és privát kapcsolattervezést igényel a hálózat kialakításában.
Költségoptimalizálás
A költségoptimalizálás a szükségtelen kiadások csökkentésére és a működési hatékonyság javítására összpontosít. További információ: Költségoptimalizálásitervezési felülvizsgálati ellenőrzőlistája.
Az Azure díjkalkulátorával megbecsülheti költségeit. Vegye figyelembe a referenciaarchitektúrában használt alábbi szolgáltatásokat.
Az Event Hubs költséggel kapcsolatos szempontjai
Ez a referenciaarchitektúra az Event Hubsot a Standard szinten helyezi üzembe. A díjszabási modell az átviteli egységeken, a bejövő eseményeken és az események rögzítésén alapul. A bejövő esemény egy 64 KB, vagy kevesebb méretű adategység. A nagyobb üzenetek számlázása a 64 KB többszörösei alapján történik. Az átviteli egységeket az Azure Portalon vagy az Event Hubs felügyeleti API-ján keresztül adhatja meg.
Ha több megőrzési napra van szüksége, fontolja meg a dedikált szintet. Ez a szint szigorú követelményekkel rendelkező egybérlős üzembe helyezéseket biztosít. Ez az ajánlat kapacitásegységeken alapuló fürtöt hoz létre, és nem függ az átviteli egységektől. A standard szint számlázása a bejövő események és az átviteli egységek alapján is történik.
További információ: Event Hubs díjszabási.
Az Azure Databricks költségeinek szempontjai
Az Azure Databricks a Standard és a Prémium szintet biztosítja, amelyek mindegyike három számítási feladatot támogat. Ez a referenciaarchitektúra egy Azure Databricks-munkaterületet helyez üzembe a Prémium szinten.
Az adatelemzési számítási feladatoknak egy feladatfürtön kell futniuk. Az adatmérnökök fürtök segítségével építenek és hajtanak végre feladatokat. Az adatelemzési számítási feladatoknak egy teljes körű fürtön kell futniuk, és arra szolgálnak, hogy az adattudósok interaktívan feltárják, vizualizálják, manipulálják és megosztják az adatokat és az elemzéseket.
Az Azure Databricks több tarifamodellt is kínál.
használatalapú fizetéses csomag
A kiválasztott virtuálisgép-példány alapján a fürtökben és az Azure Databricks-egységekben kiépített virtuális gépekért (DBU-kért) kell fizetnie. A DBU a feldolgozási képességek egysége, amelyet az Azure másodpercenkénti használat alapján számláz. A DBU-használat az Azure Databricksben futó példány méretétől és típusától függ. A díjszabás a választott számítási feladattól és szinttől függ.
elővásárlási csomag
A teljes bekerülési költség csökkentése érdekében egy vagy három évre vállalja a kötelezettséget az Azure Databricks DBU-k, azaz elkötelezettségi egységek vonatkozásában, szemben a használatalapú fizetési modellel adott időszakban.
További információ: Azure Databricks díjszabási.
Az Azure Cosmos DB költségeinek szempontjai
Ebben az architektúrában az Azure Databricks-feladat rekordokat ír az Azure Cosmos DB-be. A lefoglalni kívánt kapacitásért díjat számítunk fel, amely másodpercenkénti kérelemegységekben (RU/s) van megadva. Ez a kapacitás beszúrási műveletek végrehajtására szolgál. A számlázási egység óránként 100 RU/másodperc. A 100 KB-os elemek írásának költsége például 50 RU/s.
Írási műveletekhez állítson be elegendő kapacitást a másodpercenként szükséges írások számának támogatásához. A kiosztott átviteli sebesség növeléséhez használja a portált vagy az Azure CLI-t az írási műveletek végrehajtása előtt, majd a műveletek befejezése után csökkentse az átviteli sebességet. Az írási időszak átviteli sebessége az adott adatokhoz szükséges minimális átviteli sebesség és a beszúrási művelethez szükséges átviteli sebesség összege. Ez a számítás feltételezi, hogy nincs más futó számítási feladat.
Példa költségelemzésre
Tegyük fel, hogy egy tárolón 1000 RU/s átviteli sebességű értéket konfigurál, és 30 napig folyamatosan futtatja, ami 720 óra.
A tárolót óránként 100 RU/s-onként 10 egységre számlázzák minden egyes órában. 10 egység 0,008 dollárért (óránként 100 RU/s-ért) 0,08 USD/óra díjat számítunk fel.
720 óra vagy 7200 egység (amelyek 100 RU-t tartalmaznak) díja 57,60 dollár lesz a hónapra.
A tárolt adatokhoz és indexekhez felhasznált minden GB tárterületért is kiszámlázzuk. További információkért tekintse meg az Azure Cosmos DB díjszabási modelljét.
A számítási feladatok költségeinek gyors becsléséhez használja a Azure Cosmos DB kapacitáskalkulátorát.
Működési kiválóság
Az Operational Excellence az üzemeltetési folyamatok összességét jelenti, amelyek az alkalmazások üzembe helyezését és azok folyamatos futtatását biztosítják éles környezetben. További információ: Működési kiválóságitervezési felülvizsgálati ellenőrzőlistája.
Figyelés
Az Azure Databricks az Apache Sparkon alapul. Az Azure Databricks és az Apache Spark is Apache Log4j használja a naplózás szabványos kódtáraként. Az Apache Spark által biztosított alapértelmezett naplózás mellett a Log Analyticsben is implementálhatja a naplózást. További információ: Az Azure Databricks monitorozása.
Mivel az com.microsoft.pnp.TaxiCabReader osztály menet- és viteldíj-üzeneteket dolgoz fel, előfordulhat, hogy egy üzenet helytelenül formázott, ezért érvénytelen. Fontos elemezni ezeket a hibásan formázott üzeneteket termelési környezetben, hogy gyorsan azonosítsák az adatforrásokkal kapcsolatos problémát, és gyorsan kijavítsák azt az adatvesztés megelőzése érdekében. A com.microsoft.pnp.TaxiCabReader osztály regisztrál egy Apache Spark-akkumulátort, amely nyomon követi a hibásan formázott viteldíjrekordok és a menetrekordok számát:
@transient val appMetrics = new AppMetrics(spark.sparkContext)
appMetrics.registerGauge("metrics.malformedrides", AppAccumulators.getRideInstance(spark.sparkContext))
appMetrics.registerGauge("metrics.malformedfares", AppAccumulators.getFareInstance(spark.sparkContext))
SparkEnv.get.metricsSystem.registerSource(appMetrics)
Az Apache Spark a Dropwizard-kódtár használatával küld metrikákat. A natív Dropwizard metrikák egyes mezői nem kompatibilisek a Log Analyticsszel, ezért ez a referenciaarchitektúra egy egyéni Dropwizard-fogadót és -riportert tartalmaz. A metrikákat a Log Analytics által elvárt formátumban formázza. Amikor az Apache Spark metrikákat jelentést tesz, az elküldik a hibás formátumú út és viteldíjadatok egyéni metrikáit is.
A Log Analytics-munkaterületen az alábbi példalekérdezésekkel figyelheti a streamelési feladat működését. Az egyes lekérdezésekben ago(1d) argumentum az utolsó napon létrehozott összes rekordot adja vissza. Ezt a paramétert módosíthatja egy másik időszak megtekintéséhez.
Stream lekérdezési művelet során naplózott kivételek
SparkLoggingEvent_CL
| where TimeGenerated > ago(1d)
| where Level == "ERROR"
Helytelen viteldíj és menetadatok felhalmozása
SparkMetric_CL
| where TimeGenerated > ago(1d)
| where name_s contains "metrics.malformedrides"
| project value_d, TimeGenerated, applicationId_s
| render timechart
SparkMetric_CL
| where TimeGenerated > ago(1d)
| where name_s contains "metrics.malformedfares"
| project value_d, TimeGenerated, applicationId_s
| render timechart
Feladatművelet időbeli alakulása
SparkMetric_CL
| where TimeGenerated > ago(1d)
| where name_s contains "driver.DAGScheduler.job.allJobs"
| project value_d, TimeGenerated, applicationId_s
| render timechart
Erőforrás-szervezés és üzembe helyezés
Hozzon létre külön erőforráscsoportokat éles, fejlesztési és tesztelési környezetekhez. A külön erőforráscsoportok használata megkönnyíti az üzemelő példányok felügyeletét, a tesztkörnyezetek törlését és a hozzáférési jogok kiosztását.
A Azure Resource Manager-sablonnal üzembe helyezheti az Azure-erőforrásokat az infrastruktúra kódkénti folyamatának megfelelően. Sablonokkal automatizálhatja az üzembe helyezéseket az Azure DevOps szolgáltatásokkal vagy más folyamatos integrációs és folyamatos kézbesítési (CI/CD) megoldásokkal.
Helyezze az egyes számítási feladatokat egy külön üzembehelyezési sablonba, és tárolja az erőforrásokat a forrásvezérlő rendszerekben. A sablonokat egy CI/CD-folyamat részeként együtt vagy egyenként is üzembe helyezheti. Ez a megközelítés leegyszerűsíti az automatizálási folyamatot.
Ebben az architektúrában az Event Hubs, a Log Analytics és az Azure Cosmos DB egyetlen számítási feladatként van azonosítva. Ezeket az erőforrásokat egyetlen Azure Resource Manager-sablon tartalmazza.
Fontolja meg a számítási feladatok fokozatos előkészítését. Helyezze üzembe különböző szakaszokban, és futtassa az érvényesítési ellenőrzéseket minden szakaszban, mielőtt a következő szakaszra lépne. Így szabályozhatja, hogyan küldhet le frissítéseket az éles környezetekbe, és minimalizálhatja a váratlan üzembe helyezési problémákat.
Ebben az architektúrában több üzembe helyezési fázis is létezik. Fontolja meg egy Azure DevOps-folyamat létrehozását és a fázisok hozzáadását. A következő fázisokat automatizálhatja:
- Azure Databricks-fürt indítása.
- Konfigurálja az Azure Databricks parancssori felületét.
- Telepítse a Scala-eszközöket.
- Adja hozzá az Azure Databricks titkos kulcsait.
Az Azure Databricks-kód és életciklusa minőségének és megbízhatóságának javítása érdekében érdemes automatizált integrációs teszteket írni.