在 Azure Data Factory 和 Synapse Analytics 中使用 Spark 活動轉換資料

適用于: Azure Data Factory Azure Synapse Analytics

提示

試用 Microsoft Fabric 中的 Data Factory,這是適用于企業的單一分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告等所有專案。 瞭解如何 免費啟動新的試用版

資料處理站和 Synapse 管線 中的 Spark 活動會在您自己的 隨選 HDInsight 叢集上 執行 Spark 程式。 本文是以資料轉換活動 一文為基礎 ,本文提供資料轉換和支援的轉換活動的一般概觀。 當您使用隨選 Spark 連結服務時,服務會自動為您立即建立 Spark 叢集來處理資料,然後在處理完成後刪除叢集。

使用 UI 將 Spark 活動新增至管線

若要使用 Spark 活動至管線,請完成下列步驟:

  1. 在管線 [活動] 窗格中搜尋 Spark,並將 Spark 活動拖曳至管線畫布。

  2. 如果尚未選取 Spark 活動,請選取畫布上的新 Spark 活動。

  3. 選取 [ HDI 叢集 ] 索引標籤,以選取或建立將用來執行 Spark 活動之 HDInsight 叢集的新連結服務。

    Shows the UI for a Spark activity.

  4. 選取 [ 腳本/ Jar] 索引標籤,以選取或建立將裝載腳本之Azure 儲存體帳戶的新作業連結服務。 指定要在該處執行之檔案的路徑。 您也可以設定進階詳細資料,包括 Proxy 使用者、偵錯組態,以及要傳遞至腳本的 Spark 組態參數。

    Shows the UI for the Script / Jar tab for a Spark activity.

Spark 活動屬性

以下是 Spark 活動的範例 JSON 定義:

{
    "name": "Spark Activity",
    "description": "Description",
    "type": "HDInsightSpark",
    "linkedServiceName": {
        "referenceName": "MyHDInsightLinkedService",
        "type": "LinkedServiceReference"
    },
    "typeProperties": {
        "sparkJobLinkedService": {
            "referenceName": "MyAzureStorageLinkedService",
            "type": "LinkedServiceReference"
        },
        "rootPath": "adfspark",
        "entryFilePath": "test.py",
        "sparkConfig": {
            "ConfigItem1": "Value"
        },
        "getDebugInfo": "Failure",
        "arguments": [
            "SampleHadoopJobArgument1"
        ]
    }
}

下表描述 JSON 定義中使用的 JSON 屬性:

屬性 描述 必要
NAME 管線中活動的名稱。 Yes
description 描述活動用途的文字。 No
type 針對 Spark 活動,活動類型為 HDInsightSpark。 Yes
linkedServiceName 執行 Spark 程式的 HDInsight Spark 連結服務名稱。 若要瞭解此連結服務,請參閱 計算連結服務 一文。 Yes
SparkJobLinkedService Azure 儲存體保存 Spark 作業檔案、相依性和記錄的連結服務。 這裡僅 支援Azure Blob 儲存體 ADLS Gen2 連結服務。 如果您未指定此屬性的值,則會使用與 HDInsight 叢集相關聯的儲存體。 這個屬性的值只能是連結服務Azure 儲存體。 No
rootPath 包含 Spark 檔案的 Azure Blob 容器和資料夾。 檔案名會區分大小寫。 如需此資料夾結構的詳細資訊,請參閱資料夾結構一節(下一節)。 Yes
entryFilePath Spark 程式碼/套件根資料夾的相對路徑。 專案檔必須是 Python 檔案或 .jar 檔案。 Yes
className 應用程式的 JAVA/Spark 主要類別 No
參數 Spark 程式的命令列引數清單。 No
proxyUser 要模擬以執行 Spark 程式的使用者帳戶 No
sparkConfig 指定主題中所列 Spark 組態屬性的值: Spark 組態 - 應用程式屬性 No
getDebugInfo 指定 Spark 記錄檔何時複製到 SPARKJobLinkedService 所指定的 HDInsight 叢集所使用的 Azure 儲存體。 允許的值:None、Always 或 Failure。 預設值:無。 No

資料夾結構

Spark 作業比 Pig/Hive 作業更具擴充性。 針對 Spark 作業,您可以提供多個相依性,例如 jar 套件(放在 JAVA CLASSPATH 中)、Python 檔案(放在 PYTHONPATH 上),以及任何其他檔案。

在 HDInsight 連結服務所參考的 Azure Blob 儲存體中建立下列資料夾結構。 然後,將相依檔案上傳至 entryFilePath 代表根資料夾中的適當子資料夾。 例如,將 Python 檔案上傳至 pyFiles 子資料夾和 jar 檔案至根資料夾的 jars 子資料夾。 在執行時間,服務需要 Azure Blob 儲存體中的下列資料夾結構:

路徑 描述 必要 類型
. (根) 儲存體連結服務中 Spark 作業的根路徑 Yes 資料夾
<使用者定義 > 指向 Spark 作業之專案檔的路徑 Yes File
。/罐子 此資料夾下的所有檔案都會上傳並放在叢集的 JAVA 類別路徑上 No Folder
./pyFiles 此資料夾下的所有檔案都會上傳並放在叢集的 PYTHONPATH 上 No Folder
。/檔 此資料夾下的所有檔案都會上傳並放在執行程式工作目錄上 No Folder
。/檔案 此資料夾下的所有檔案都會取消壓縮 No Folder
。/日誌 包含 Spark 叢集記錄的資料夾。 No Folder

以下是儲存體的範例,其中包含 HDInsight 連結服務所參考之Azure Blob 儲存體中的兩個 Spark 作業檔案。

SparkJob1
	main.jar
	files
		input1.txt
		input2.txt
	jars
		package1.jar
		package2.jar
	logs
	
	archives
	
	pyFiles

SparkJob2
	main.py
	pyFiles
		scrip1.py
		script2.py
	logs
	
	archives
	
	jars
	
	files
	

請參閱下列文章,說明如何以其他方式轉換資料: