在 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 活動至管線,請完成下列步驟:
在管線 [活動] 窗格中搜尋 Spark,並將 Spark 活動拖曳至管線畫布。
如果尚未選取 Spark 活動,請選取畫布上的新 Spark 活動。
選取 [ HDI 叢集 ] 索引標籤,以選取或建立將用來執行 Spark 活動之 HDInsight 叢集的新連結服務。
選取 [ 腳本/ 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 | 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
相關內容
請參閱下列文章,說明如何以其他方式轉換資料: