使用 Azure 事件中樞收集 Apache Spark 應用程式 (預覽版) 記錄和計量。
Fabric Apache Spark 診斷發出器擴充功能是一個程式庫,可讓 Apache Spark 應用程式將記錄、事件記錄和計量發出至不同目的地,包括 Azure 記錄分析、Azure 儲存體和 Azure 事件中樞。
在本教學課程中,您將了解如何使用 Fabric Apache Spark 診斷發出器擴充功能,將 Apache Spark 應用程式記錄、事件記錄和計量傳送至您的 Azure 事件中樞。
將記錄和度量數據收集至 Azure 事件中樞
步驟 1:建立 Azure 事件中樞執行個體
若要收集診斷記錄和計量,您可以使用現有的 Azure 事件中樞執行個體。 如果您沒有中樞,可以建立事件中樞。
步驟 2:建立具 Apache Spark 設定的 Fabric 環境構件
選項 1:使用 Azure 事件中樞連接字串進行設定
在 Fabric 中建立環境工件
將具有適當值的下列 Spark 屬性 新增至環境成品,或 選取功能區中的 [從.yml 新增],以下載 已包含下列屬性的範例 yaml 檔案 。
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.
在組態檔案中填入
<connection-string>
參數。 如需詳細資訊,請參閱 Azure 事件中樞設定。
選項 2:使用 Azure Key Vault 設定
注意
確保提交 Apache Spark 應用程式的使用者擁有讀取祕密權限。 如需詳細資訊,請參閱透過 Azure 角色型存取控制,提供 Key Vault 金鑰、憑證和密碼的存取權 (預覽)。
若要設定 Azure Key Vault 以儲存工作區金鑰,請執行下列步驟
在 Azure 入口網站中建立金鑰庫並進入該庫。
在金鑰保存庫的設定頁面中,選取 [祕密],然後選取 [產生/匯入]。
在 [建立祕密]畫面中,選擇下列值:
- 名稱:輸入祕密的名稱。
-
Value:輸入該密碼的
<connection-string>
。 - 將其他值保留為其預設值。 然後選取建立。
在 Fabric 中建立 Fabric 環境構件。
新增下列 Spark 屬性。 或選取功能區上的 [從 .yml 新增],以下載 範例 yaml 檔案,其中包含下列 Spark 屬性。
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.
在設定檔案視窗中,填滿下列參數:
<AZURE_KEY_VAULT_URI>
、<AZURE_KEY_VAULT_SECRET_KEY_NAME>
。 如需這些參數的詳細資訊,請參閱 Azure 事件中樞組態。儲存並發佈變更。
步驟 3:將環境元件附加至筆記本或 Spark 任務定義,或將其設為工作區預設設定
若要將環境附加至 Notebooks 或 Spark 工作定義:
- 瀏覽至 Fabric 中的特定筆記本或 Spark 工作定義。
- 選取主索引標籤上的 [環境] 功能表,然後選取已設定診斷 Spark 屬性的環境。
- 當您啟動 Spark 工作階段時,會套用設定。
若要將環境設定為工作區預設值:
- 在 Fabric 中,瀏覽至 [工作區設定]。
- 在工作區設定中尋找 Spark 設定(工作區設定 -> 資料工程/科學 -> Spark 設定)。
- 選取 [環境] 索引標籤,然後選擇已設定診斷 Spark 屬性的環境,然後按下 [儲存]。
可用設定
組態 | 描述 |
---|---|
spark.synapse.diagnostic.emitters |
必須的。 以逗號分隔的診斷發出器目的地名稱。 |
spark.synapse.diagnostic.emitter.<destination>.type |
必要。 內建目的地類型。 若要開啟 Azure 事件中樞目的地,值應該是 AzureEventHub 。 |
spark.synapse.diagnostic.emitter.<destination>.categories |
選擇性。 以逗號分隔的已選擇日誌類別。 可用的值包括:DriverLog 、ExecutorLog 、EventLog 、Metrics 。 如果未設定,則預設值為所有類別。 |
spark.synapse.diagnostic.emitter.<destination>.secret |
選擇性。 Azure 事件中樞執行個體的連線字串。 此欄位應符合此模式 Endpoint=sb://<FQDN>/;SharedAccessKeyName=<KeyName>;SharedAccessKey=<KeyValue>;EntityPath=<PathName> |
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault |
如果未指定 .secret ,則為必要。
Azure 金鑰保存庫 uri,其中會儲存秘密(連接字串)。 |
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault.secretName |
如果指定 .secret.keyVault ,則為必要。 用於儲存連線字串的 Azure Key Vault 祕密名稱。 |
spark.synapse.diagnostic.emitter.<destination>.filter.eventName.match |
選擇性。 以逗號分隔的 spark 事件名稱,您可以指定要收集哪些事件。 例如:SparkListenerApplicationStart,SparkListenerApplicationEnd |
spark.synapse.diagnostic.emitter.<destination>.filter.loggerName.match |
選擇性。 以逗號分隔的 Log4j 記錄器名稱,您可以指定要收集哪些記錄。 例如:org.apache.spark.SparkContext,org.example.Logger |
spark.synapse.diagnostic.emitter.<destination>.filter.metricName.match |
選擇性。 您可以藉由設定以逗號分隔的 spark 指標名稱後綴,來指定要收集的指標。 例如:jvm.heap.used |
spark.fabric.pools.skipStarterPools |
必要。 此 Spark 屬性用於強制啟動隨選 Spark 會話。 使用預設集區時,您應該將值設定為 true,以觸發函式庫發出日誌和度量。 |
注意
Azure EventHub 實例連接字串應一律包含 EntityPath
,這是 Azure 事件中樞實例的名稱。
記錄資料範例
以下是 JSON 格式的記錄範例:
{
"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-artifact-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 工作區
為目標 Azure 事件中樞建立受控私人端點。 如需詳細指示,請參閱在 Microsoft Fabric 中建立和使用受控私人端點 - Microsoft Fabric。
一旦受控私人端點獲得核准,使用者就可以開始向目標 Azure 事件中樞發出記錄和計量。