共用方式為


使用 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 事件中樞連接字串進行設定

  1. 在 Fabric 中建立 Fabric 環境工藝品

  2. 將具有適當值的下列 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 設定

注意

已知問題:暫時無法使用選項 2 啟動工作階段。 目前,將秘密儲存在 金鑰保存庫 會防止 Spark 工作階段啟動。 請使用選項 1 中所述的方法來設定它的優先順序。

確保提交 Apache Spark 應用程式的使用者擁有讀取祕密權限。 如需詳細資訊,請參閱透過 Azure 角色型存取控制,提供 Key Vault 金鑰、憑證和密碼的存取權 (預覽)

若要設定 Azure Key Vault 以儲存工作區金鑰,請執行下列步驟

  1. 在 Azure 入口網站中建立並移至您的金鑰保存庫。

  2. 在金鑰保存庫的設定頁面中,選取 [祕密],然後選取 [產生/匯入]

  3. [建立祕密]畫面中,選擇下列值:

    • 名稱:輸入祕密的名稱。
    • [值]:輸入密碼的 <connection-string>
    • 將其他值保留為其預設值。 然後選取建立
  4. 在 Fabric 中建立 Fabric 環境工藝品。

  5. 新增下列 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_NAME>
    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_NAME><AZURE_KEY_VAULT_SECRET_KEY_NAME>。 如需這些參數的詳細資訊,請參閱 Azure 事件中樞組態

  6. 儲存並發佈變更。

步驟 3:將環境工藝品附加至筆記本或 Spark 工作定義,或將其設定為工作區預設值

若要將環境附加至 Notebooks 或 Spark 工作定義

  1. 瀏覽至 Fabric 中的特定筆記本或 Spark 工作定義。
  2. 選取主索引標籤上的 [環境] 功能表,然後選取已設定診斷 Spark 屬性的環境。
  3. 當您啟動 Spark 工作階段時,會套用設定。

若要將環境設定為工作區預設值

  1. 在 Fabric 中,瀏覽至 [工作區設定]。
  2. 在工作區設定中尋找 Spark 設定 (工作區設定 -> 資料工程/科學 -> Spark 設定)
  3. 選取 [環境] 索引標籤,然後選擇已設定診斷 Spark 屬性的環境,然後按下 [儲存]

注意

只有工作區管理員可以管理工作區設定。 此處所做的變更會套用至連結至工作區設定的所有筆記本和 Spark 工作定義。 如需詳細資訊,請參閱 Fabric 工作區設定

可用設定

組態 描述
spark.synapse.diagnostic.emitters 必要。 以逗號分隔的診斷發出器目的地名稱。
spark.synapse.diagnostic.emitter.<destination>.type 必要。 內建目的地類型。 若要開啟 Azure 事件中樞目的地,值應該是 AzureEventHub
spark.synapse.diagnostic.emitter.<destination>.categories 選擇性。 以逗號分隔的選取記錄類別。 可用的值包括:DriverLogExecutorLogEventLogMetrics。 如果未設定,則預設值為所有類別。
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 Key Vault 名稱 (連線字串)。
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

注意

Azure 事件中樞連線字串應一律包含 EntityPath,這是 Azure 事件中樞執行個體的名稱。

記錄資料範例

以下是 JSON 格式的記錄範例:

{
  "timestamp": "2024-09-06T03:09:37.235Z",
  "category": "Log|EventLog|Metrics",
  "fabricLivyId": "<fabric-livy-id>",
  "applicationId": "<application-id>",
  "applicationName": "<application-name>",
  "executorId": "<driver-or-executor-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": "2024-09-06T03:09:37.235Z",
    "message": "Initialized BlockManager: BlockManagerId(1, vm-04b22223, 34319, None)",
    "logger_name": "org.apache.spark.storage.BlockManager",
    "level": "INFO",
    "thread_name": "dispatcher-Executor"
    //...
  }
}

具有受控虛擬網路的 Fabric 工作區

為目標 Azure 事件中樞建立受控私人端點。 如需詳細指示,請參閱在 Microsoft Fabric 中建立和使用受控私人端點 - Microsoft Fabric

一旦受控私人端點獲得核准,使用者就可以開始向目標 Azure 事件中樞發出記錄和計量。

下一步