Bemærk
Adgang til denne side kræver godkendelse. Du kan prøve at logge på eller ændre mapper.
Adgang til denne side kræver godkendelse. Du kan prøve at ændre mapper.
Denne artikel beskriver Azure Blob Storage-destinationen for Fabric Apache Spark Diagnostic Emitter.
Fabric Apache Spark Diagnostic Emitter leverer en fælles konfigurationsmodel for Spark-diagnostik på tværs af destinationer. I denne tutorial konfigurerer du modellen til at rute Apache Spark-logs, hændelseslogs og metrikker til Azure Blob Storage.
For emitterarkitektur og vejledning i destinationsvalg, se Fabric Oversigt over Apache Spark Diagnostic Emitter.
Indsaml logge og målepunkter til lagerkonto
Trin 1: Opret en lagerkonto
For at indsamle diagnostiske logfiler og metrikker kan du bruge en eksisterende Azure Storage-konto. Hvis du ikke har en, kan du oprette en Azure blob storage-konto eller oprette en lagringskonto til brug med Azure Data Lake Storage Gen2.
Trin 2: Opret et Fabric Environment Item med Apache Spark-konfiguration
Mulighed 1: Konfigurér med Azure Storage URI og Access key
Opret et miljøobjekt i Fabric
Tilføj følgende Spark-egenskaber med de relevante værdier til miljøelementet, eller vælg Add from .yml i båndet for at downloade eksempelfilen yaml, som allerede indeholder følgende egenskaber.
spark.synapse.diagnostic.emitters: MyStorageBlob spark.synapse.diagnostic.emitter.MyStorageBlob.type: "AzureStorage" spark.synapse.diagnostic.emitter.MyStorageBlob.categories: "DriverLog,ExecutorLog,EventLog,Metrics" spark.synapse.diagnostic.emitter.MyStorageBlob.uri: "https://<my-blob-storage>.blob.core.windows.net/<container-name>/<folder-name>" spark.synapse.diagnostic.emitter.MyStorageBlob.auth: "AccessKey" spark.synapse.diagnostic.emitter.MyStorageBlob.secret: <storage-access-key> spark.fabric.pools.skipStarterPools: "true" //Add this Spark property when using the default pool.Udfyld følgende parametre i konfigurationsfilen:
<my-blob-storage>,<container-name>,<folder-name>,<storage-access-key>. For flere detaljer om disse parametre, se Azure Storage konfigurationer.
Mulighed 2: Konfigurér med Azure Key Vault
Bemærk
Sørg for, at brugere, der indsender Apache Spark-programmer, får læsehemmelige tilladelser. For mere information, se Giv adgang til Key Vault nøgler, certifikater og hemmeligheder med en Azure rollebaseret adgangskontrol.
Sådan konfigurerer du Azure Key Vault til at gemme arbejdsområdenøglen:
Opret og gå til dit nøglearkiv i Azure-portalen.
På siden med indstillinger for key vault skal du vælge Hemmeligheder og derefter Generér/importér.
På skærmen Opret en hemmelighed skal du vælge følgende værdier:
- Navn: Angiv et navn til hemmeligheden.
-
Værdi: Angiv
<storage-access-key>for hemmeligheden. - Lad de andre værdier være deres standardværdier. Vælg derefter Opret.
Opret et miljøobjekt i Fabric.
Tilføj følgende Spark-egenskaber. Eller vælg Tilføj fra .yml på båndet for at uploade yaml-eksempelfilen , som omfatter følgende Spark-egenskaber.
spark.synapse.diagnostic.emitters: <MyStorageBlob> spark.synapse.diagnostic.emitter.MyStorageBlob.type: "AzureStorage" spark.synapse.diagnostic.emitter.MyStorageBlob.categories: "DriverLog,ExecutorLog,EventLog,Metrics" spark.synapse.diagnostic.emitter.MyStorageBlob.uri: "https://<my-blob-storage>.blob.core.windows.net/<container-name>/<folder-name>" spark.synapse.diagnostic.emitter.MyStorageBlob.auth: "AccessKey" spark.synapse.diagnostic.emitter.MyStorageBlob.secret.keyVault: <AZURE_KEY_VAULT_URI> spark.synapse.diagnostic.emitter.MyStorageBlob.secret.keyVault.secretName: <AZURE_KEY_VAULT_SECRET_KEY_NAME> spark.fabric.pools.skipStarterPools: "true" //Add this Spark property when using the default pool.Udfyld følgende parametre i konfigurationsfilen:
<my-blob-storage>,<container-name>,<folder-name>,<AZURE_KEY_VAULT_URI>,<AZURE_KEY_VAULT_SECRET_KEY_NAME>. For flere detaljer om disse parametre, se Azure Storage konfigurationer.Gem og publicer ændringerne.
Mulighed 3: Konfigurér med service principal certifikatautentificering
Brug denne mulighed til at autentificere til Azure Storage med en Microsoft Entra service principal og et certifikat gemt i Azure Key Vault.
Før du konfigurerer Spark-egenskaberne:
- Opret eller importer et certifikat i Azure Key Vault. Certifikatet skal indeholde en eksportbar privat nøgle.
- Download kun det offentlige certifikat i CER- eller PEM-format, og upload det til Microsoft Entra-appens registrering under Certificates & secrets
Certificates. - Tildel rollen Storage Blob Data Contributor til tjenesteprincipalen på mållagringskontoen eller containeren.
- Tildel rollen som Key Vault Certificate User på Azure Key Vault til den indloggede Fabric-bruger, som starter Spark-sessionen.
Vigtigt!
Certifikathentning og adgang til lagring bruger forskellige identiteter. Den indloggede Fabric-bruger henter certifikatet og dets private nøgle fra Azure Key Vault. Servicechefen bruger certifikatet til at autentificere og skrive diagnostiske data til Azure Storage. At give Key Vault-adgang kun til servicehovedet er ikke tilstrækkeligt.
Tilføj følgende Spark-egenskaber til Fabric-miljøet:
spark.synapse.diagnostic.emitters: MyStorageBlob
spark.synapse.diagnostic.emitter.MyStorageBlob.type: "AzureStorage"
spark.synapse.diagnostic.emitter.MyStorageBlob.categories: "DriverLog,ExecutorLog,EventLog,Metrics"
spark.synapse.diagnostic.emitter.MyStorageBlob.uri: "https://<STORAGE_ACCOUNT>.blob.core.windows.net/<CONTAINER>/<FOLDER>"
spark.synapse.diagnostic.emitter.MyStorageBlob.auth: "ServicePrincipalCert"
spark.synapse.diagnostic.emitter.MyStorageBlob.certificate.keyVault.certificateName: "<CERTIFICATE_NAME>"
spark.synapse.diagnostic.emitter.MyStorageBlob.certificate.keyVault: "https://<KEY_VAULT_NAME>.vault.azure.net/"
spark.synapse.diagnostic.emitter.MyStorageBlob.tenantId: "<SERVICE_PRINCIPAL_TENANT_ID>"
spark.synapse.diagnostic.emitter.MyStorageBlob.clientId: "<SERVICE_PRINCIPAL_CLIENT_ID>"
spark.fabric.pools.skipStarterPools: "true"
Ui-egenskaben identificerer destinationsbeholderen Blob Storage og den valgfrie mappe. Certifikatnavnet skal nøjagtigt matche certifikatnavnet i Azure Key Vault.
Trin 3: Vedhæft miljøelementet til notesbøger eller spark-jobdefinitioner, eller sæt det som arbejdsområdestandarden
Bemærk
Det er kun administratorer af arbejdsområdet, der kan angive et miljø som standard for et arbejdsområde.
Når den er angivet, bliver den standardmiljøet for alle notesbøger og Spark-jobdefinitioner i arbejdsområdet. For flere detaljer, se Fabric Workspace Settings.
Sådan vedhæfter du miljøet til definitioner af notesbøger eller Spark-job:
- Naviger til den specifikke notebook- eller Spark-jobdefinition i Fabric.
- Vælg menuen Miljø under fanen Hjem, og vælg miljøet med de konfigurerede egenskaber for Diagnosticering Spark.
- Konfigurationen anvendes, når du starter en Spark-session.
Sådan angiver du miljøet som standard for arbejdsområdet:
- Gå til arbejdsområdeindstillinger i Fabric.
- Find Spark-indstillinger i arbejdsområdeindstillinger (arbejdsområdeindstilling>Data Engineering/Science>Spark-indstillinger).
- Vælg fanen Miljø , og vælg miljøet med konfigurerede egenskaber for diagnosticerings spark, og klik på Gem.
Trin 4. Indsend et Apache Spark-program, og få vist loggene og målepunkterne
Du kan bruge Apache Log4j-biblioteket til at skrive brugerdefinerede logge.
Eksempel for Scala:
%%spark
val logger = org.apache.log4j.LogManager.getLogger("com.contoso.LoggerExample")
logger.info("info message")
logger.warn("warn message")
logger.error("error message")
//log exception
try {
1/0
} catch {
case e:Exception =>logger.warn("Exception", e)
}
// run job for task level metrics
val data = sc.parallelize(Seq(1,2,3,4)).toDF().count()
Eksempel for PySpark:
%%pyspark
logger = sc._jvm.org.apache.log4j.LogManager.getLogger("com.contoso.PythonLoggerExample")
logger.info("info message")
logger.warn("warn message")
logger.error("error message")
Trin 5: Se logfilerne i Azure Storage Account
Når du har sendt et job til den konfigurerede Spark-session, kan du få vist logfilerne og målepunkterne på destinationslagerkontoen. Loggene gemmes i tilsvarende stier baseret på forskellige programmer, der identificeres af <workspaceId>.<fabricLivyId>. Alle logfiler er i JSON Lines-format (også kendt som newline-afgrænset JSON eller ndjson), hvilket er praktisk til databehandling.
Tilgængelige konfigurationer
| Variantkonfiguration | Beskrivelse |
|---|---|
spark.synapse.diagnostic.emitters |
Krævet. De kommaseparerede destinationsnavne for diagnosticeringsudledere. F.eks. MyDest1,MyDest2 |
spark.synapse.diagnostic.emitter.<destination>.type |
Krævet. Indbygget destinationstype. For at aktivere Azure lagringsdestination skal AzureStorage inkluderes i dette felt. |
spark.synapse.diagnostic.emitter.<destination>.categories |
Valgfrit. De markerede logkategorier med kommasepareret. Tilgængelige værdier omfatter DriverLog, ExecutorLog, EventLog, Metrics. Hvis den ikke er sat, er standardværdien alle kategorier. |
spark.synapse.diagnostic.emitter.<destination>.auth |
Krævet. Sæt denne værdi til ServicePrincipalCert, når du bruger Microsoft Entra service principal certificate authentication. |
spark.synapse.diagnostic.emitter.<destination>.uri |
Krævet. Destinationsbeholderen Blob Storage og den valgfrie mappe-URI. F.eks., https://<storage-account>.blob.core.windows.net/<container>/<folder>. |
spark.synapse.diagnostic.emitter.<destination>.secret |
Valgfrit. Det hemmelige indhold (AccessKey eller SAS). Påkrævet hvis man bruger .auth = AccessKey or SAS og .secret.keyVault er ikke specificeret. |
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault |
Påkrævet hvis man bruger .auth = AccessKey or SAS og .secret er ikke specificeret. Azure Key Vault-ui'en, hvor hemmeligheden (AccessKey eller SAS) er gemt. |
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault.secretName |
Påkrævet, hvis .secret.keyVault er angivet. Det hemmelige navn for Azure Key Vault, hvor hemmeligheden (AccessKey eller SAS) er gemt. |
spark.synapse.diagnostic.emitter.<destination>.tenantId |
Påkrævet ved brug .auth = ServicePrincipalCertaf . Azure Active Directory-lejer-ID for Service Principal. |
spark.synapse.diagnostic.emitter.<destination>.clientId |
Påkrævet ved brug .auth = ServicePrincipalCertaf . Applikations-ID'et (klient-)ID'et for Service Principal. |
spark.synapse.diagnostic.emitter.<destination>.certificate.keyVault.certificateName |
Påkrævet, når godkendelsen er ServicePrincipalCert. Navnet på certifikatet, der er gemt i Azure Key Vault. Certifikatet skal indeholde en tilgængelig privat nøgle, og dets offentlige certifikat skal være registreret i Microsoft Entra-appen. |
spark.synapse.diagnostic.emitter.<destination>.certificate.keyVault |
Påkrævet, når godkendelsen er ServicePrincipalCert. Azure Key Vault URL'en, der gemmer certifikatet. Den indloggede Fabric-bruger, der starter Spark-sessionen, skal have tilladelse til at hente certifikatet og dets private nøgle, såsom rollen som Key Vault Certificate User. |
spark.synapse.diagnostic.emitter.<destination>.filter.eventName.match |
Valgfrit. Navnene på de kommaseparerede spark-hændelser kan du angive, hvilke hændelser der skal indsamles. Eksempel: SparkListenerApplicationStart,SparkListenerApplicationEnd |
spark.synapse.diagnostic.emitter.<destination>.filter.loggerName.match |
Valgfrit. De kommaseparerede Log4j-logføringsnavne kan du angive, hvilke logge der skal indsamles. Eksempel: org.apache.spark.SparkContext,org.example.Logger |
spark.synapse.diagnostic.emitter.<destination>.filter.metricName.match |
Valgfrit. De kommaseparerede navnesuffikser for minimetrikværdier kan du angive, hvilke målepunkter der skal indsamles. Eksempel: jvm.heap.used |
spark.fabric.pools.skipStarterPools |
Krævet. Denne Spark-egenskab bruges til at gennemtvinge en Spark-session efter behov. Du skal angive værdien til true , når du bruger standardgruppen, for at udløse bibliotekerne for at sende logge og målepunkter. |
Logfør dataeksempel
Her er et eksempel på en logpost i JSON-format:
{
"timestamp": "2025-02-28T09:13:57.978Z",
"category": "Log|EventLog|Metrics",
"fabricLivyId": "<fabric-livy-id>",
"applicationId": "<application-id>",
"applicationName": "<application-name>",
"executorId": "<driver-or-executor-id>",
"userId": "<the-submitter-user-id>",
"fabricTenantId": "<my-fabric-tenant-id>",
"capacityId": "<my-fabric-capacity-id>",
"artifactType": "SynapseNotebook|SparkJobDefinition",
"artifactId": "<my-fabric-item-id>",
"fabricWorkspaceId": "<my-fabric-workspace-id>",
"fabricEnvId": "<my-fabric-environment-id>",
"executorMin": "<executor-min>",
"executorMax": "<executor-max>",
"isHighConcurrencyEnabled": "true|false",
"properties": {
// The message properties of logs, events and metrics.
"timestamp": "2025-02-28T09:13:57.941Z",
"message": "ApplicationAttemptId: appattempt_1740734011890_0001_000001",
"logger_name": "org.apache.spark.deploy.yarn.ApplicationMaster",
"level": "INFO",
"thread_name": "main"
// ...
}
}
Fabric-arbejdsområder med administreret virtuelt netværk
Opret et administreret privat endpoint for mål-Azure Blob Storage. For detaljerede instruktioner, se Opret og brug administrerede private endpoints i Fabric.
Når det administrerede private endpoint er godkendt, kan brugere begynde at udsende logfiler og metrikker til mål-Azure Blob Storage.