Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I den här artikeln beskrivs Azure Event Hubs mål för Fabric Apache Spark Diagnostic Emitter.
Fabric Apache Spark Diagnostic Emitter tillhandahåller en gemensam konfigurationsmodell för Spark-diagnostik mellan mål. I den här artikeln konfigurerar du modellen för att dirigera Apache Spark-loggar, händelseloggar och mått till Azure Event Hubs.
Vägledning för emitterarkitektur och val av destination finns i Översikt över Fabric Apache Spark Diagnostic Emitter.
Samla in loggar och mätdata till Azure Event Hubs
Steg 1: Skapa en Azure Event Hubs-instans
Om du vill samla in diagnostikloggar och mått kan du använda en befintlig Azure Event Hubs instans. Om du inte har någon kan du skapa en händelsehubb.
Steg 2: Skapa ett Fabric Environment-objekt med Apache Spark-konfiguration
Alternativ 1: Konfigurera med Azure Event Hubs anslutningssträng
Skapa ett miljöobjekt i Fabric
Lägg till följande Spark-egenskaper med lämpliga värden i miljöobjektet, eller välj Add from .yml i ribbon för att ladda ner exempelfilen yaml som redan innehåller följande egenskaper.
spark.synapse.diagnostic.emitters: MyEventHub spark.synapse.diagnostic.emitter.MyEventHub.type: "AzureEventHub" spark.synapse.diagnostic.emitter.MyEventHub.categories: "Log,EventLog,Metrics" spark.synapse.diagnostic.emitter.MyEventHub.secret: <connection-string> spark.fabric.pools.skipStarterPools: "true" //Add this Spark property when using the default pool.Fyll i parametrarna
<connection-string>i konfigurationsfilen. Mer information finns i Azure Event Hubs konfigurationer.
Alternativ 2: Konfigurera med Azure Key Vault
Anteckning
Se till att användare som skickar Apache Spark-program beviljas läshemliga behörigheter. Mer information finns i Ge åtkomst till Key Vault-nycklar, certifikat och hemligheter med ett Azure-rollbaserat åtkomstkontrollsystem.
Så här konfigurerar du Azure Key Vault för lagring av arbetsytenyckeln:
Skapa och gå till ditt nyckelvalv i Azure-portalen.
På inställningssidan för nyckelvalvet väljer du Hemligheter och sedan Generera/importera.
Välj följande värden på skärmen Skapa en hemlighet:
- Namn: Ange ett namn för hemligheten.
-
Värde: Ange
<connection-string>för hemligheten. - Lämna standardvärdena för de andra alternativen. Välj sedan Skapa.
Skapa ett miljöobjekt i Fabric.
Lägg till följande Spark-egenskaper. Eller välj Lägg till från .yml i menyfliksområdet för att ladda ned yaml-exempelfilen, som innehåller följande Spark-egenskaper.
spark.synapse.diagnostic.emitters: MyEventHub spark.synapse.diagnostic.emitter.MyEventHub.type: "AzureEventHub" spark.synapse.diagnostic.emitter.MyEventHub.categories: "Log,EventLog,Metrics" spark.synapse.diagnostic.emitter.MyEventHub.secret.keyVault: <AZURE_KEY_VAULT_URI> spark.synapse.diagnostic.emitter.MyEventHub.secret.keyVault.secretName: <AZURE_KEY_VAULT_SECRET_KEY_NAME> spark.fabric.pools.skipStarterPools: "true" //Add this Spark property when using the default pool.Fyll i följande parametrar i konfigurationsfilen:
<AZURE_KEY_VAULT_URI>,<AZURE_KEY_VAULT_SECRET_KEY_NAME>. Mer information om dessa parametrar finns i Azure Event Hubs konfigurationer.Spara och publicera ändringarna.
Alternativ 3: Konfigurera med autentisering av tjänsteprincipalcertifikat
Använd detta alternativ för att autentisera dig mot Azure Event Hubs med en Microsoft Entra-tjänsteprincip och ett certifikat lagrat i Azure Key Vault. Mer information finns i Skapa ett huvudnamn för tjänsten som innehåller ett certifikat med hjälp av Azure CLI.
Innan du konfigurerar Spark-egenskaperna:
- Skapa eller importera ett certifikat i Azure Key Vault. Certifikatet måste innehålla en exportbar privat nyckel.
- Ladda endast ner det offentliga certifikatet i CER- eller PEM-format och ladda upp det till Microsoft Entra-appregistreringen under Certifikat och hemligheterCertifikat.
- Registrera Azure Key Vault URI och certifikatnamn. Du använder dessa värden i Spark-egenskaperna.
- Tilldela rollen Azure Event Hubs Data Sender till tjänstehuvudpersonen på målnamnet Event Hubs eller Event Hub-instansen.
- Tilldela rollen Key Vault Certificate User på Azure Key Vault till den inloggade Fabric-användaren som startar Spark-sessionen.
Important
Certifikathämtning och åtkomst till Event Hubs använder olika identiteter. Den inloggade Fabric-användaren hämtar certifikatet och dess privata nyckel från Azure Key Vault. Tjänstehuvudpersonen använder certifikatet för att autentisera och skicka diagnosdata till Event Hubs. Att endast ge Key Vault-åtkomst till tjänstehuvudpersonen är inte tillräckligt.
Lägg till följande Spark-egenskaper i Fabric-miljön:
spark.synapse.diagnostic.emitters: MyEventHub
spark.synapse.diagnostic.emitter.MyEventHub.type: "AzureEventHub"
spark.synapse.diagnostic.emitter.MyEventHub.categories: "DriverLog,ExecutorLog,EventLog,Metrics"
spark.synapse.diagnostic.emitter.MyEventHub.hostName: "<EVENT_HUB_NAMESPACE>.servicebus.windows.net"
spark.synapse.diagnostic.emitter.MyEventHub.entityPath: "<EVENT_HUB_NAME>"
spark.synapse.diagnostic.emitter.MyEventHub.certificate.keyVault.certificateName: "<CERTIFICATE_NAME>"
spark.synapse.diagnostic.emitter.MyEventHub.certificate.keyVault: "https://<KEY_VAULT_NAME>.vault.azure.net/"
spark.synapse.diagnostic.emitter.MyEventHub.tenantId: "<SERVICE_PRINCIPAL_TENANT_ID>"
spark.synapse.diagnostic.emitter.MyEventHub.clientId: "<SERVICE_PRINCIPAL_CLIENT_ID>"
spark.fabric.pools.skipStarterPools: "true"
För certifikatbaserad autentisering är hostName det fullt kvalificerade domännamnet för Event Hubs-namnrymden, utan prefixet sb:// . entityPath är namnet på den målinstansen Event Hub. Certifikatnamnet måste exakt matcha certifikatnamnet i Azure Key Vault.
Steg 3: Koppla miljöobjektet till anteckningsböcker eller Spark-jobbdefinitioner, eller ange det som standard för arbetsytan
Anteckning
- Endast arbetsyteadministratörer kan ange en miljö som standard för en arbetsyta.
- När den har angetts blir den standardmiljö för alla notebook-filer och Spark-jobbdefinitioner på arbetsytan. Mer information finns i Fabric Arbetsyteinställningar.
För att bifoga miljön till anteckningsboks- eller Spark-jobbdefinitioner:
- Gå till den specifika notebook- eller Spark-jobbdefinitionen i Fabric.
- Välj menyn Miljö på fliken Start och välj miljön med de konfigurerade Spark-egenskaperna för diagnostik.
- Konfigurationen tillämpas när du startar en Spark-session.
Så här anger du miljön som standard för arbetsytan:
- Gå till arbetsytinställningar i Fabric.
- Hitta Spark-inställningar i arbetsyteinställningar (Inställningar för arbetsyteinställning>datateknik/Science>Spark).
- Välj fliken Miljö, och välj den miljö där diagnostik-sparklägen är konfigurerade, och välj Spara.
Steg 4. Skicka ett Apache Spark-program och visa loggarna och måtten
Du kan använda Apache Log4j-biblioteket för att skriva anpassade loggar.
Exempel för 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()
Exempel för 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")
Tillgängliga konfigurationer
| Konfiguration | beskrivning |
|---|---|
spark.synapse.diagnostic.emitters |
Obligatoriskt. Kommaavgränsade målnamn för diagnostikemittare. Till exempel: MyDest1,MyDest2 |
spark.synapse.diagnostic.emitter.<destination>.type |
Obligatoriskt. Inbyggd måltyp. Om du vill aktivera Azure Event Hubs mål ska värdet vara AzureEventHub. |
spark.synapse.diagnostic.emitter.<destination>.categories |
Valfritt. De valda loggkategorierna som är avgränsade med kommatecken. Tillgängliga värden är DriverLog, ExecutorLog, EventLog, Metrics. Om det inte anges är standardvärdet alla kategorier. |
spark.synapse.diagnostic.emitter.<destination>.secret |
Valfritt. Azure Event Hubs anslutningssträng. Krävs om du inte använder certifikatbaserad autentisering och .secret.keyVault inte har angetts. Det här fältet ska matcha mönstret Endpoint=sb://<FQDN>/;SharedAccessKeyName=<KeyName>;SharedAccessKey=<KeyValue>;EntityPath=<PathName>. |
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault |
Krävs om anslutningssträngsautentisering används och .secret inte har angetts. Den Azure Key Vault uri där hemligheten (reťazec pripojenia) lagras. |
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault.secretName |
Krävs om .secret.keyVault anges. Det Azure Key Vault hemliga namnet där hemligheten (reťazec pripojenia) lagras. |
spark.synapse.diagnostic.emitter.<destination>.hostName |
Krävs för certifikatbaserad autentisering. Det fullt kvalificerade domännamnet för Event Hubs-namnrymden, utan prefixet sb:// . Till exempel <namespace>.servicebus.windows.net. |
spark.synapse.diagnostic.emitter.<destination>.entityPath |
Krävs för certifikatbaserad autentisering. Namnet på Event Hubs-instansen som tar emot diagnostikdatan. |
spark.synapse.diagnostic.emitter.<destination>.tenantId |
Krävs om du använder certifikatbaserad autentisering. Det Azure Active Directory klient-ID:t för tjänstens huvudprincip. |
spark.synapse.diagnostic.emitter.<destination>.clientId |
Krävs om du använder certifikatbaserad autentisering. Applikationens (klient) ID för Service Principal. |
spark.synapse.diagnostic.emitter.<destination>.certificate.keyVault |
Krävs för certifikatbaserad autentisering. Azure Key Vault-URL:en som lagrar certifikatet. Den inloggade Fabric-användaren som startar Spark-sessionen måste ha behörighet att hämta certifikatet och dess privata nyckel, såsom rollen Key Vault Certificate User. |
spark.synapse.diagnostic.emitter.<destination>.certificate.keyVault.certificateName |
Krävs för certifikatbaserad autentisering. Namnet på certifikatet som lagras i Azure Key Vault. Certifikatet måste innehålla en tillgänglig privat nyckel, och dess publika certifikat måste vara registrerat i Microsoft Entra-appen. |
spark.synapse.diagnostic.emitter.<destination>.filter.eventName.match |
Valfritt. De kommaavgränsade spark-händelsenamnen, kan du specificera vilka händelser som ska samlas in. Till exempel: SparkListenerApplicationStart,SparkListenerApplicationEnd |
spark.synapse.diagnostic.emitter.<destination>.filter.loggerName.match |
Valfritt. Med de kommaavgränsade Log4j-loggningsnamnen kan du specificera vilka loggar som ska samlas in. Till exempel: org.apache.spark.SparkContext,org.example.Logger |
spark.synapse.diagnostic.emitter.<destination>.filter.metricName.match |
Valfritt. Med kommaavgränsade spark-måttnamnssuffix kan du ange vilka mått som ska samlas in. Till exempel: jvm.heap.used |
spark.fabric.pools.skipStarterPools |
Obligatoriskt. Den här Spark-egenskapen används för att tvinga fram en Spark-session på begäran. Du bör ange värdet till true när du använder standardpoolen för att utlösa biblioteken för att generera loggar och mått. |
Anteckning
Den Azure Event Hubs-instansens anslutningssträng ska alltid innehålla EntityPath, som är namnet på Azure Event Hubs-instansen.
Exempel på loggdata
Här är en exempelloggpost 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"
// ...
}
}
När diagnostiken skickas till Azure Event Hubs kan du använda Event Hub som källa i en Fabric-händelseström för att bearbeta eller dirigera data.
Fabric arbetsytor med hanterat virtuellt nätverk
Skapa en hanterad privat slutpunkt för det tilltänkta Azure Event Hubs. Mer detaljerade instruktioner finns i Skapa och använd hanterade privata slutpunkter i Fabric.
När den hanterade privata slutpunkten har godkänts kan användarna börja skicka loggar och mätvärden till målets Azure Event Hubs.