Adatok betöltése az Azure Data Explorer Go SDK használatával
Az Azure Adatkezelő egy gyors és hatékonyan skálázható adatáttekintési szolgáltatás napló- és telemetriaadatokhoz. Go SDK-ügyfélkódtárat biztosít az Azure Data Explorer szolgáltatással való interakcióhoz. A Go SDK-val betöltheti, vezérelheti és lekérdezheti az azure-Data Explorer-fürtök adatait.
Ebben a cikkben először egy táblát és egy adatleképezést hoz létre egy tesztfürtben. Ezután a Go SDK-val várólistára állíthatja a betöltéseket a fürt számára, és ellenőrizheti az eredményeket.
Előfeltételek
- Microsoft-fiók vagy Microsoft Entra felhasználói identitás. Nincs szükség Azure-előfizetésre.
- Egy Azure-Data Explorer-fürt és -adatbázis. Hozzon létre egy fürtöt és egy adatbázist.
- Telepítse a Gitet.
- Telepítse a Go-t az alábbi Go SDK minimális követelményekkel.
- Hozzon létre egy alkalmazásregisztrációt, és adjon neki engedélyeket az adatbázisnak. Mentse az ügyfél-azonosítót és az ügyfélkulcsot későbbi használatra.
A Go SDK telepítése
Az Azure Data Explorer Go SDK automatikusan települ a [Go-modulokat használó mintaalkalmazás" futtatásakor. Ha egy másik alkalmazáshoz telepítette a Go SDK-t, hozzon létre egy Go modult, és kérje le az Azure Data Explorer csomagot (a használatávalgo get
), például:
go mod init foo.com/bar
go get github.com/Azure/azure-kusto-go/kusto
A csomagfüggőség hozzá lesz adva a go.mod
fájlhoz. Használja a Go alkalmazásban.
A kód áttekintése
Ez a Kód áttekintése szakasz nem kötelező. Ha szeretné megtudni, hogyan működik a kód, tekintse át az alábbi kódrészleteket. Ellenkező esetben továbbléphet az Alkalmazás futtatása elemre.
Hitelesítés
A művelet végrehajtása előtt a programnak hitelesítenie kell magát az Azure Data Explorer szolgáltatásban.
auth := kusto.Authorization{Config: auth.NewClientCredentialsConfig(clientID, clientSecret, tenantID)}
client, err := kusto.New(kustoEndpoint, auth)
A kusto egy példánya. Az engedélyezés a szolgáltatásnév hitelesítő adataival jön létre. Ezután létrehoz egy kusto-t. A fürtvégpontot is elfogadó Új függvénnyel rendelkező ügyfél.
Tábla létrehozása
A tábla létrehozása parancsot egy Kusto-utasítás jelöli. Az Mgmt függvény felügyeleti parancsok végrehajtására szolgál. A parancs végrehajtására szolgál egy tábla létrehozásához.
func createTable(kc *kusto.Client, kustoDB string) {
_, err := kc.Mgmt(context.Background(), kustoDB, kusto.NewStmt(createTableCommand))
if err != nil {
log.Fatal("failed to create table", err)
}
log.Printf("Table %s created in DB %s\n", kustoTable, kustoDB)
}
Tipp
A Kusto-utasítás alapértelmezés szerint állandó a jobb biztonság érdekében.
NewStmt
sztringkonstansokat fogad el. Az UnsafeStmt
API lehetővé teszi a nem állandó utasításszegmensek használatát, de nem ajánlott.
A Kusto create table parancs a következő:
.create table StormEvents (StartTime: datetime, EndTime: datetime, EpisodeId: int, EventId: int, State: string, EventType: string, InjuriesDirect: int, InjuriesIndirect: int, DeathsDirect: int, DeathsIndirect: int, DamageProperty: int, DamageCrops: int, Source: string, BeginLocation: string, EndLocation: string, BeginLat: real, BeginLon: real, EndLat: real, EndLon: real, EpisodeNarrative: string, EventNarrative: string, StormSummary: dynamic)
Leképezés létrehozása
Az adatleképezések a betöltés során a bejövő adatok Azure-Data Explorer-táblákban lévő oszlopokra való leképezésére szolgálnak. További információ: adatleképezés. A leképezés ugyanúgy jön létre, mint egy tábla, az Mgmt
adatbázis nevével és a megfelelő paranccsal. A teljes parancs a minta GitHub-adattárában érhető el.
func createMapping(kc *kusto.Client, kustoDB string) {
_, err := kc.Mgmt(context.Background(), kustoDB, kusto.NewStmt(createMappingCommand))
if err != nil {
log.Fatal("failed to create mapping - ", err)
}
log.Printf("Mapping %s created\n", kustoMappingRefName)
}
Adatok betöltése
A betöltés várólistára kerül egy meglévő Azure Blob Storage tárolóból származó fájl használatával.
func ingestFile(kc *kusto.Client, blobStoreAccountName, blobStoreContainer, blobStoreToken, blobStoreFileName, kustoMappingRefName, kustoDB, kustoTable string) {
kIngest, err := ingest.New(kc, kustoDB, kustoTable)
if err != nil {
log.Fatal("failed to create ingestion client", err)
}
blobStorePath := fmt.Sprintf(blobStorePathFormat, blobStoreAccountName, blobStoreContainer, blobStoreFileName, blobStoreToken)
err = kIngest.FromFile(context.Background(), blobStorePath, ingest.FileFormat(ingest.CSV), ingest.IngestionMappingRef(kustoMappingRefName, ingest.CSV))
if err != nil {
log.Fatal("failed to ingest file", err)
}
log.Println("Ingested file from -", blobStorePath)
}
A betöltési ügyfél a betöltéssel jön létre. Új. A FromFile függvény a Azure Blob Storage URI-ra hivatkozik. A leképezési hivatkozás neve és az adattípus FileOption formában lesz átadva.
Az alkalmazás futtatása
Klónozza a mintakódot a GitHubról:
git clone https://github.com/Azure-Samples/Azure-Data-Explorer-Go-SDK-example-to-ingest-data.git cd Azure-Data-Explorer-Go-SDK-example-to-ingest-data
Futtassa a mintakódot a következő kódrészletben
main.go
látható módon:func main { ... dropTable(kc, kustoDB) createTable(kc, kustoDB) createMapping(kc, kustoDB) ingestFile(kc, blobStoreAccountName, blobStoreContainer, blobStoreToken, blobStoreFileName, kustoMappingRefName, kustoDB, kustoTable) ... }
Tipp
A különböző műveletkombinációk kipróbálásához megszüntetheti a megfelelő függvények megjegyzését a fájlban
main.go
.A mintakód futtatásakor a következő műveletek lesznek végrehajtva:
-
Tábla elvetése:
StormEvents
a tábla el lesz vetve (ha létezik). -
Tábla létrehozása:
StormEvents
a tábla létrejön. -
Leképezés létrehozása:
StormEvents_CSV_Mapping
a leképezés létrejön. - Fájlbetöltés: Egy CSV-fájl (Azure Blob Storage) várólistára kerül a betöltéshez.
-
Tábla elvetése:
Ha szolgáltatásnevet szeretne létrehozni a hitelesítéshez, használja az Azure CLI-t az az ad sp create-for-rbac paranccsal. Állítsa be a szolgáltatásnév adatait a fürtvégponttal és az adatbázis nevével a program által használt környezeti változók formájában:
export AZURE_SP_CLIENT_ID="<replace with appID>" export AZURE_SP_CLIENT_SECRET="<replace with password>" export AZURE_SP_TENANT_ID="<replace with tenant>" export KUSTO_ENDPOINT="https://<cluster name>.<azure region>.kusto.windows.net" export KUSTO_DB="name of the database"
Futtassa a programot:
go run main.go
Hasonló kimenetet fog kapni:
Connected to Azure Data Explorer Using database - testkustodb Failed to drop StormEvents table. Maybe it does not exist? Table StormEvents created in DB testkustodb Mapping StormEvents_CSV_Mapping created Ingested file from - https://kustosamples.blob.core.windows.net/samplefiles/StormEvents.csv
Ellenőrzés és hibaelhárítás
Várjon 5–10 percet, amíg az üzenetsorba helyezett betöltési folyamat ütemezi a betöltési folyamatot, és betölti az adatokat az Azure Data Explorer.
Jelentkezzen be a https://dataexplorer.azure.com oldalon, és csatlakozzon a fürthöz. Ezután futtassa a következő parancsot a táblában lévő
StormEvents
rekordok számának lekéréséhez.StormEvents | count
Futtassa a következő parancsot az adatbázisban annak ellenőrzéséhez, hogy voltak-e betöltési hibák az elmúlt négy órában. A futtatás előtt cserélje le az adatbázis nevét.
.show ingestion failures | where FailedOn > ago(4h) and Database == "<DatabaseName>"
Futtassa a következő parancsot az elmúlt négy órában végzett összes betöltési művelet állapotának megtekintéséhez. A futtatás előtt cserélje le az adatbázis nevét.
.show operations | where StartedOn > ago(4h) and Database == "<DatabaseName>" and Operation == "DataIngestPull" | summarize arg_max(LastUpdatedOn, *) by OperationId
Az erőforrások eltávolítása
Ha követni szeretné a többi cikkünket, tartsa meg a létrehozott erőforrásokat. Ha nem, futtassa a következő parancsot az adatbázisban a StormEvents
tábla elvetéséhez.
.drop table StormEvents