分享方式:


使用 Azure Data Factory 與 Synapse Analytics 中的 Spark 活動轉換資料

適用於:Azure Data Factory Azure Synapse Analytics

提示

試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的全方位分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告的所有項目。 了解如何免費開始新的試用

Data Factory 與 Synapse 管道中的 Spark 活動在您自己隨選的 HDInsight 叢集上執行 Spark 程式。 本文是根據 資料轉換活動 一文,它呈現資料轉換和支援的轉換活動的一般概觀。 當您使用隨選 Spark 連結的服務時,服務會自動為您建立 Spark 叢集 Just-In-Time 以處理資料,一旦處理完成之後就會刪除叢集。

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

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

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

  2. 若尚未選取 Spark 活動,請在畫布上選取新的 Jar 活動。

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

    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 存放 Spark 作業檔案、相依性和記錄的 Azure 儲存體連結服務。 這裡僅支援 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 記錄檔複製到 HDInsight 叢集所使用 (或) sparkJobLinkedService 所指定的 Azure 儲存體。 允許的值︰None、Always 或 Failure。 預設值:無。 No

資料夾結構

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

在 HDInsight 連結服務所參考的 Azure Blob 儲存體中,建立下列資料夾結構。 然後,將相依檔案上傳至根資料夾中以 entryFilePath 表示的適當子資料夾。 例如,將 Python 檔案上傳至根資料夾的 [pyFiles] 子資料夾,將 jar 檔案上傳至 [jars] 子資料夾。 在執行階段,服務會預期 Azure Blob 儲存體中有下列資料夾結構︰

路徑 描述 必要 類型
. (root) Spark 作業在儲存體連結服務中的根路徑 Yes 資料夾
<使用者定義> 指向 Spark 作業輸入檔案的路徑 Yes File
./jars 此資料夾下的所有檔案都會上傳並放在叢集的 Java 類別路徑中 No 資料夾
./pyFiles 此資料夾下的所有檔案會上傳並放在叢集的 PYTHONPATH No 資料夾
./files 此資料夾下的所有檔案會上傳並放在執行程式工作目錄 No 資料夾
./archives 此資料夾下的所有檔案未壓縮 No 資料夾
./logs 此資料夾包含來自 Spark 叢集的記錄。 No 資料夾

以下是 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
	

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