使用 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 活動,請完成下列步驟:
在管線 [活動] 窗格中搜尋 Spark,然後將 Spark 活動拖曳至管線畫布中。
若尚未選取 Spark 活動,請在畫布上選取新的 Jar 活動。
選取 [HDI 叢集] 索引標籤,即可選取或建立 HDInsight 叢集的新連結服務,該叢集會用來執行 Spark 活動。
選取 [指令碼/Jar] 索引標籤,選取或建立 Azure 儲存體帳戶的新作業連結服務,該帳戶會裝載您的指令碼。 指定要在該處執行的檔案路徑。 您也可以設定進階的詳細資料,包括 Proxy 使用者、偵錯設定,以及要傳遞至指令碼的引數和 Spark 設定參數。
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
相關內容
請參閱下列文章,其說明如何以其他方式轉換資料: