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 taxi egy mérőórával rendelkezik, amely információkat küld az egyes utazásokról, beleértve az időtartamot, a távolságot, a csomagfelvételt és a legördülő 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. A menetdíj- és viteldíjrekordokat is tartalmazza. A menetadatok magukban foglalják az utazás időtartamát, az utazás távolságát, valamint a csomagfelvételi és legördülő helyeket. 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 Core-alkalmazás, amely beolvassa a rekordokat, és elküldi őket az Event Hubsnak. A generátor JSON formátumban küldi el a menetadatokat, a menetdíjak adatait 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 ciklikus időszeleteléses 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ípus közös adatmodellje olyan PartitionKey tulajdonságot Medallionhasznál, amely az , HackLicenseés VendorIda .
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.
Streamfeldolgozás
Az Azure Databricksben egy feladat adatfeldolgozást végez. A feladat hozzá van rendelve egy fürthöz, majd fut rajta. 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ódtár a com.microsoft.pnp.GeoFinder osztályban a felvételi és legördülő helyek koordinátái alapján határozza meg a környék nevét.
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. 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.
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ények olyan adategységek, amelyek legalább 64 KB méretűek. 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 üzemelő példányokat 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ökkel é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
Azure Databricks-véglegesítési egységként kötelezettséget vállal a dbU-kra egy vagy három évre, hogy csökkentse az adott időszakban a használatalapú fizetéses modellhez képest a teljes bekerülési költséget.
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/s. 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ó számlázása óránként 10 egység, óránként 100 RU/s. 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 órán át vagy 7200 egységért (100 kérelemegységből) 57,60 dollárt számlázunk ki a hónapra.
A tárterületet a tárolt adatokhoz és indexekhez használt összes GB-ra 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 azokat az üzemeltetési folyamatokat fedi le, amelyek üzembe helyeznek egy alkalmazást, és éles környezetben tartják azt. 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. Éles környezetben fontos elemezni ezeket a hibásan formázott üzeneteket, hogy azonosítsák az adatforrásokkal kapcsolatos problémát, hogy gyorsan javíthatók legyenek az adatvesztés megakadályozása é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, a rendszer elküldi a hibás út és a 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ővel
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
Külön erőforráscsoportokat hozhat létre é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 átmeneti előkészítését. Üzembe helyezés különböző szakaszokban, és az ellenőrzési ellenőrzések futtatása minden fázisban, mielőtt továbblép a következő fázisra. Í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.