Data Factory in Microsoft Fabric 的疑難排解管線
本文將探討 Data Factory in Microsoft Fabric 外部控制活動的常見疑難排解方法。
連接器和複製活動
針對連接器問題 (例如使用複製活動時發生錯誤),請參閱針對連接器進行疑難排解一文。
Azure Databricks
錯誤碼:3200
訊息:錯誤 403。
原因:
The Databricks access token has expired.
建議:根據預設,Azure Databricks 存取權杖的有效期限為 90天。 建立新的令牌並更新連線。
錯誤碼:3201
訊息:
Missing required field: settings.task.notebook_task.notebook_path.
原因:
Bad authoring: Notebook path not specified correctly.
建議:在 Databricks 活動中指定筆記本路徑。
訊息:
Cluster... does not exist.
原因:
Authoring error: Databricks cluster does not exist or has been deleted.
建議:確認 Databricks 叢集存在。
訊息:
Invalid Python file URI... Please visit Databricks user guide for supported URI schemes.
原因:
Bad authoring.
建議:針對工作區定址配置指定絕對路徑,或針對 Databricks 檔案系統 (DFS) 中所儲存的檔案指定
dbfs:/folder/subfolder/foo.py
。
訊息:
{0} LinkedService should have domain and accessToken as required properties.
原因:
Bad authoring.
建議:確認 連線定義。
訊息:
{0} LinkedService should specify either existing cluster ID or new cluster information for creation.
原因:
Bad authoring.
建議:確認 [聯機定義]/azure/data-factory/compute-linked-services#azure-databricks-linked-service)。
訊息:
Node type Standard_D16S_v3 is not supported. Supported node types: Standard_DS3_v2, Standard_DS4_v2, Standard_DS5_v2, Standard_D8s_v3, Standard_D16s_v3, Standard_D32s_v3, Standard_D64s_v3, Standard_D3_v2, Standard_D8_v3, Standard_D16_v3, Standard_D32_v3, Standard_D64_v3, Standard_D12_v2, Standard_D13_v2, Standard_D14_v2, Standard_D15_v2, Standard_DS12_v2, Standard_DS13_v2, Standard_DS14_v2, Standard_DS15_v2, Standard_E8s_v3, Standard_E16s_v3, Standard_E32s_v3, Standard_E64s_v3, Standard_L4s, Standard_L8s, Standard_L16s, Standard_L32s, Standard_F4s, Standard_F8s, Standard_F16s, Standard_H16, Standard_F4s_v2, Standard_F8s_v2, Standard_F16s_v2, Standard_F32s_v2, Standard_F64s_v2, Standard_F72s_v2, Standard_NC12, Standard_NC24, Standard_NC6s_v3, Standard_NC12s_v3, Standard_NC24s_v3, Standard_L8s_v2, Standard_L16s_v2, Standard_L32s_v2, Standard_L64s_v2, Standard_L80s_v2.
原因:
Bad authoring.
建議:請參閱錯誤訊息。
錯誤碼:3202
訊息:
There were already 1000 jobs created in past 3600 seconds, exceeding rate limit: 1000 job creations per 3600 seconds.
原因:
Too many Databricks runs in an hour.
建議:檢查使用此 Databricks 工作區的所有管線,以了解其作業建立比率。 如果管線啟動的 Databricks 執行總數太多,請將一些管線遷移至新的工作區。
訊息:
Could not parse request object: Expected 'key' and 'value' to be set for JSON map field base_parameters, got 'key: "..."' instead.
原因:
Authoring error: No value provided for the parameter.
建議:檢查管線 JSON,並確保 baseParameters 筆記本中的所有參數都指定非空白值。
訊息:
User:
SimpleUserContext{userId=..., name=user@company.com, orgId=...}is not authorized to access cluster.
原因:產生存取權杖的使用者不允許存取連線中指定的 Databricks 叢集。
建議:請確定使用者具有工作區中的必要權限。
訊息:
Job is not fully initialized yet. Please retry later.
原因:作業尚未初始化。
建議:請稍候,稍後再試一次。
錯誤碼:3203
訊息:
The cluster is in Terminated state, not available to receive jobs. Please fix the cluster or retry later.
原因:叢集已終止。 若為互動式叢集,此問題可能是因為競爭條件。
建議:若要避免此錯誤,請使用作業叢集。
錯誤碼:3204
訊息:
Job execution failed.
原因︰錯誤訊息指出各種問題,例如未預期的叢集狀態或特定活動。 通常不會出現任何錯誤訊息。
建議:N/A
錯誤碼:3208
訊息:
An error occurred while sending the request.
原因:Databricks 服務的網路連線已中斷。
建議:如果您使用自我裝載 Data Factory 執行階段,則請確定來自 Data Factory 執行階段節點的網路連線可靠。 如果使用 Azure Data Factory 執行階段,則重試通常有效。
布林值執行輸出會以字串的形式開始,而不是預期的 int
徵狀:您的布林值執行輸出會以字串的形式開始 (例如,
"0"
或"1"
),而不是預期的 int (例如,0
or1
)。當您依賴此起始輸出的管線失敗時,您在 2021 年 9 月 28 日上午 9 點 IST 注意到這項變更。 管線上未進行任何變更,而且布林值輸出資料已如預期在失敗之前到達。
原因:此問題是由最近的變更所造成,這是設計方式所致。 變更之後,如果結果是以零開頭的數字,Data Factory 會將數字轉換成八進位值,這是錯誤。 此數字一律為 0 或 1,永遠不會在變更之前造成問題。 因此,若要修正八進位轉換,字串輸出會以原狀從 Notebook 執行傳遞。
建議:將 if 條件變更為如
if(value=="0")
的項目。
函式
錯誤碼:3602
訊息:
Invalid HttpMethod: '%method;'.
原因:Azure Function 活動不支援活動承載中指定的 Httpmethod。
建議:支援的 Httpmethod 是:PUT、POST、GET、DELETE、OPTIONS、HEAD 和 TRACE。
錯誤碼:3603
訊息:
Response Content is not a valid JObject.
原因:呼叫的 Azure 函式未在回應中傳回 JSON 承載。 Data Factory 和 Synapse 管線 Azure 函式活動僅支援 JSON 回應內容。
建議:更新 Azure 函數以傳回有效的 JSON 承載,例如 C# 函數可能會傳回
(ActionResult)new OkObjectResult("{\"Id\":\"123\"}");
錯誤碼:3606
訊息:Azure 函數活動遺漏函數金鑰。
原因:Azure 函數活動定義不完整。
建議:檢查輸入 Azure 函數活動 JSON 定義是否具有名為
functionKey
的屬性。
錯誤碼:3607
訊息:
Azure function activity missing function name.
原因:Azure 函數活動定義不完整。
建議:檢查輸入 Azure 函數活動 JSON 定義是否具有名為
functionName
的屬性。
錯誤碼:3608
訊息:
Call to provided Azure function '%FunctionName;' failed with status-'%statusCode;' and message - '%message;'.
原因:活動定義中的 Azure 函數詳細資料可能不正確。
建議:請修正 Azure 函數的詳細資料,然後再試一次。
錯誤碼:3609
訊息:
Azure function activity missing functionAppUrl.
原因:Azure 函數活動定義不完整。
建議:檢查輸入 Azure 函數活動 JSON 定義是否具有名為
functionAppUrl
的屬性。
錯誤碼:3610
訊息:
There was an error while calling endpoint.
原因:函數 URL 可能不正確。
建議:請確認活動 JSON 中的
functionAppUrl
值正確無誤,然後再試一次。
錯誤碼:3611
訊息:
Azure function activity missing Method in JSON.
原因:Azure 函數活動定義不完整。
建議:檢查輸入 Azure 函數活動 JSON 定義是否具有名為
method
的屬性。
錯誤碼:3612
訊息:
Azure function activity missing LinkedService definition in JSON.
原因:Azure 函數活動定義不完整。
建議:檢查輸入 Azure 函數活動的 JSON 定義是否有連線的詳細資料。
Azure Machine Learning
錯誤碼:4101
訊息:
AzureMLExecutePipeline activity '%activityName;' has invalid value for property '%propertyName;'.
原因:
%propertyName;
屬性的定義未使用正確格式或遺失。建議:檢查
%activityName;
活動的%propertyName;
屬性是否已使用正確資料加以定義。
錯誤碼:4110
訊息:
AzureMLExecutePipeline activity missing LinkedService definition in JSON.
原因:AzureMLExecutePipeline 活動定義不完整。
建議:檢查輸入 AzureMLExecutePipeline 活動的 JSON 定義是否已正確連線詳細資料。
錯誤碼:4111
訊息:
AzureMLExecutePipeline activity has wrong LinkedService type in JSON. Expected LinkedService type: '%expectedLinkedServiceType;', current LinkedService type: Expected LinkedService type: '%currentLinkedServiceType;'.
原因:活動定義不正確。
建議:檢查輸入 AzureMLExecutePipeline 活動的 JSON 定義是否已正確連線詳細資料。
錯誤碼:4112
訊息:
AzureMLService connection has invalid value for property '%propertyName;'.
原因:'%propertyName;' 屬性的定義未使用正確格式或遺失。
建議:檢查連線的
%propertyName;
屬性是否已使用正確資料加以定義。
錯誤碼:4121
訊息:
Request sent to Azure Machine Learning for operation '%operation;' failed with http status code '%statusCode;'. Error message from Azure Machine Learning: '%externalMessage;'.
原因:用來存取 Azure Machine Learning 的認證已過期。
建議:請確認認證有效,然後再試一次。
錯誤碼:4122
訊息:
Request sent to Azure Machine Learning for operation '%operation;' failed with http status code '%statusCode;'. Error message from Azure Machine Learning: '%externalMessage;'.
原因:Azure Machine Learning 連線中提供的認證無效,或沒有執行該作業的權限。
建議:請確認連線中的認證有效,而且具有存取 Azure Machine Learning 的權限。
錯誤碼:4123
訊息:
Request sent to Azure Machine Learning for operation '%operation;' failed with http status code '%statusCode;'. Error message from Azure Machine Learning: '%externalMessage;'.
原因:
pipelineParameters
這類活動屬性不適用於 Azure Machine Learning (ML) 管線。建議:檢查活動屬性值是否符合預期的承載 (連線中指定且已發佈的 Azure Machine Learning 管線承載)。
錯誤碼:4124
訊息:
Request sent to Azure Machine Learning for operation '%operation;' failed with http status code '%statusCode;'. Error message from Azure Machine Learning: '%externalMessage;'.
原因:已發佈的 Azure Machine Learning 管線端點不存在。
建議:確認連線中指定且已發佈的 Azure Machine Learning 管線端點存在於 Azure Machine Learning 中。
錯誤碼:4125
訊息:
Request sent to Azure Machine Learning for operation '%operation;' failed with http status code '%statusCode;'. Error message from Azure Machine Learning: '%externalMessage;'.
原因:Azure Machine Learning 上發生伺服器錯誤。
建議:稍後重試。 如果問題持續發生,請洽詢 Azure Machine Learning 小組以取得協助。
錯誤碼:4126
訊息:
Azure ML pipeline run failed with status: '%amlPipelineRunStatus;'. Azure ML pipeline run Id: '%amlPipelineRunId;'. Please check in Azure Machine Learning for more error logs.
原因:Azure Machine Learning 管線執行失敗。
建議:檢查 Azure Machine Learning 以取得更多錯誤記錄,然後修正 ML 管線。
常見
錯誤碼:2103
訊息:
Please provide value for the required property '%propertyName;'.
原因:未提供屬性所需的值。
建議:提供訊息中的值,然後再試一次。
錯誤碼:2104
訊息:
The type of the property '%propertyName;' is incorrect.
原因:提供的屬性類型不正確。
建議:請修正屬性的類型,然後再試一次。
錯誤碼:2105
訊息:
An invalid json is provided for property '%propertyName;'. Encountered an error while trying to parse: '%message;'.
原因:屬性的值無效,或不是預期的格式。
建議:請參閱屬性的文件,並確認提供的值包含正確的格式和類型。
錯誤碼:2106
訊息:
The storage connection string is invalid. %errorMessage;
原因:儲存體的連接字串無效或格式不正確。
建議:請移至 Azure 入口網站並尋找您的儲存體,然後將連接字串複製並貼到您的連線中,然後再試一次。
錯誤碼:2110
訊息:
The connection type '%linkedServiceType;' is not supported for '%executorType;' activities.
原因:活動中指定的連線不正確。
建議:確認連線類型是活動支援的其中一個類型。
錯誤碼:2111
訊息:
The type of the property '%propertyName;' is incorrect. The expected type is %expectedType;.
原因:提供的屬性類型不正確。
建議:請修正屬性類型,然後再試一次。
錯誤碼:2112
訊息:
The cloud type is unsupported or could not be determined for storage from the EndpointSuffix '%endpointSuffix;'.
原因:EndpointSuffix 中儲存體的雲端類型不受支援或無法判斷。
建議:請使用另一個雲端中的儲存體,然後再試一次。
Azure Batch
下表適用於 Azure Batch。
錯誤碼:2500
訊息:
Hit unexpected exception and execution failed.
原因:
Can't launch command, or the program returned an error code.
建議:請確認可執行檔存在。 如果程式已啟動,請確認 stdout.txt 和 stderr.txt 已上傳至儲存體帳戶。 在您程式碼中包含記錄是利於偵錯的好方法。
錯誤碼:2501
訊息:
Cannot access user batch account; please check batch account settings.
原因:不正確的 Batch 存取金鑰或集區名稱。
建議:請確認連線中的集區名稱和 Batch 存取金鑰。
錯誤碼:2502
訊息:
Cannot access user storage account; please check storage account settings.
原因:儲存體帳戶名稱或存取金鑰不正確。
建議:請確認連線中的儲存體帳戶名稱和存取金鑰。
錯誤碼:2504
訊息:
Operation returned an invalid status code 'BadRequest'.
原因:Azure 活動的
folderPath
中有太多檔案。resourceFiles
的大小總計不能超過 32,768 個字元。建議:移除不必要的檔案或將其壓縮,並新增 unzip 命令來將其解壓縮。
例如,使用
powershell.exe -nologo -noprofile -command "& { Add-Type -A 'System.IO.Compression.FileSystem'; [IO.Compression.ZipFile]::ExtractToDirectory($zipFile, $folder); }" ; $folder\yourProgram.exe
錯誤碼:2505
訊息:
Cannot create Shared Access Signature unless Account Key credentials are used.
原因:Azure Batch 活動僅支援使用存取金鑰的儲存體帳戶。
建議:請參閱錯誤描述。
錯誤碼:2507
訊息:
The folder path does not exist or is empty: ...
原因:位於指定路徑的儲存體帳戶中沒有任何檔案。
建議:資料夾路徑必須包含您想要執行的可執行檔。
錯誤碼:2508
訊息:
There are duplicate files in the resource folder.
原因:資料夾路徑的不同子資料夾中有多個名稱相同的檔案。
建議:Azure Batch 活動會將 folderPath 下的資料夾結構壓平合併。 如果您需要保留資料夾結構,請壓縮檔案,並使用解壓縮命令在 Azure Batch 中將檔案解壓縮。
例如,使用
powershell.exe -nologo -noprofile -command "& { Add-Type -A 'System.IO.Compression.FileSystem'; [IO.Compression.ZipFile]::ExtractToDirectory($zipFile, $folder); }" ; $folder\yourProgram.exe
錯誤碼:2509
訊息:
Batch url ... is invalid; it must be in Uri format.
原因:Batch URL 必須類似於
https://mybatchaccount.eastus.batch.azure.com
建議:請參閱錯誤描述。
錯誤碼:2510
訊息:
An error occurred while sending the request.
原因:Batch URL 無效。
建議:確認 Batch URL。
網路活動
錯誤碼:2001
訊息:
The length of execution output is over limit (around 4MB currently).
原因:執行輸出的大小大於 4 MB,但支援的輸出回應承載大小上限為 4 MB。
建議:確定執行輸出大小未超過 4 MB。 如需詳細資訊,請參閱如何為使用 Data Factory 移動的資料擴增大小。
錯誤碼:2002
訊息:
The payload including configurations on activity/data/connection is too large. Please check if you have settings with very large value and try to reduce its size.
原因:您嘗試傳送的承載太大。
建議:請參閱承載太大。
錯誤碼:2003
訊息:
There are substantial concurrent external activity executions which is causing failures due to throttling under subscription <subscription id>, region <region code> and limitation <current limit>. Please reduce the concurrent executions. For limits, refer https://aka.ms/adflimits.
原因:同時執行太多活動。 同時觸發太多管線時,就會發生此狀況。
建議:減少管線並行。 您可能需要分散管線的觸發時間。
錯誤碼:2105
訊息:
The value type '<provided data type>', in key '<key name>' is not expected type '<expected data type>'
原因:在動態內容運算式中產生的資料與索引鍵不符,並且導致 JSON 剖析失敗。
建議:查看索引鍵欄位,並修正動態內容定義。
錯誤碼:2108
訊息:
Error calling the endpoint '<URL>'. Response status code: 'NA - Unknown'. More details: Exception message: 'NA - Unknown [ClientSideException] Invalid Url: <URL>. Please verify Url or Data Factory runtime is valid and retry. Localhost URLs are allowed only with SelfHosted Data Factory runtime'
原因:無法連線到提供的 URL。 可能的原因包括網路連線有問題、URL 無法解析,或在 Azure Data Factory 執行階段上使用了 localhost URL。
建議:確認提供的 URL 可供存取。
訊息:
Error calling the endpoint '%url;'. Response status code: '%code;'
原因:要求因為基本問題而失敗,例如網路連線、DNS 失敗、伺服器憑證驗證或逾時。
建議:使用 Fiddler/Netmon/Wireshark 來驗證要求。
使用 Fiddler
若要使用 Fiddler 來為受監視的 Web 應用程式建立 HTTP 工作階段:
下載、安裝和開啟 Fiddler。
如果您的 Web 應用程式使用 HTTPS,請移至 [工具]>[Fiddler 選項]>[HTTPS]。
在 [HTTPS] 索引標籤中,選取 [取得 HTTPS 連線] 和 [將 HTTPS 流量解密]。
如果您的應用程式使用 TLS/SSL 憑證,請將 Fiddler 憑證新增至您的裝置。
移至:[工具] > [Fiddler 選項] > [HTTPS] > [動作] > [將根憑證匯出到桌面]。
藉由前往 [檔案]>[擷取流量] 來關閉擷取作業。 或是按下 F12。
清除瀏覽器的快取後,所有快取的項目都會移除,因此必須重新下載。
建立要求:
選取 [編輯器] 索引標籤。
設定 HTTP 方法和 URL。
如有需要,請新增標頭和要求本文。
選取 [執行]。
再次開啟流量擷取,並在您的頁面上完成有問題的交易。
移至:[檔案] > [儲存] > [所有工作階段]。
如需詳細資訊,請參閱開始使用 Azure Fiddler
錯誤碼:2113
訊息:
ExtractAuthorizationCertificate: Unable to generate a certificate from a Base64 string/password combination
原因:無法從 Base64 字串/密碼組合產生憑證。
建議:確認已正確輸入您所使用的 Base64 編碼 PFX 憑證和密碼組合。
錯誤碼:2403
訊息:
Get access token from MSI failed for Datafactory <DF mname>, region <region code>. Please verify resource url is valid and retry.
原因:無法從提供的資源 URL 取得存取權杖。
建議:確認您已為受控識別提供正確的資源 URL。
一般
REST 接續權杖 Null 錯誤
錯誤訊息: {"token":null,"range":{"min":..}
原因:跨多個分割區/頁面查詢時,後端服務會傳回 JObject 格式的接續權杖,具有 3 個屬性:權杖、最小和最大索引鍵範圍,例如,{"token":null,"range":{"min":"05C1E9AB0DAD76","max":"05C1E9CD673398"}})。 視來源資料而定,查詢可能會產生 0,表示遺漏權杖,但還有更多資料要擷取。
建議:當 continuationToken 非 Null 時,字串為 {"token":null,"range":{"min":"05C1E9AB0DAD76","max":"05C1E9CD673398"}},需要使用先前回應的接續權杖,再次呼叫 queryActivityRuns API。 您必須再次傳遞查詢 API 的完整字串。 活動會在查詢結果的後續頁面中傳回。 您應該忽略此頁面中有空陣列,只要完整 continuationToken 值 != null,您就需要繼續查詢。 如需詳細資訊,請參閱用於管線執行查詢的 REST API。
活動停滯問題
當您觀察到活動執行的時間比正常執行還久,但幾乎沒有進度時,可能是停滯。 您可以嘗試取消然後重試,看看是否有幫助。 如果是複製活動,您可以從針對複製活動效能進行疑難排解了解效能監視和疑難排解;如果是資料流程,請從對應資料流程效能和微調指南中了解。
承載過大
錯誤訊息: The payload including configurations on activity/data/connection is too large. Please check if you have settings with very large value and try to reduce its size.
原因:每個活動執行的承載包含活動設定、相關聯的資料和連線組態 (若有的話),以及每個活動類型所產生的一小部分系統屬性。 此類承載大小的限制是 896 KB,如同 Data Factory 和 Azure Synapse Analytics 的 Azure 限制文件中所述。
建議:您可能會因為從上游活動輸出或外部傳入一或多個大型參數值而達到此限制,特別是當您在控制流程中跨活動傳遞實際資料時。 檢查您是否可以減少大型參數值的大小,或調整管線邏輯,以避免跨活動傳遞這類值,並改為在活動內處理。
不支援的壓縮導致檔案損壞
徵狀:您嘗試解壓縮儲存在 Blob 容器中的檔案。 管線中單一複製活動的來源,其壓縮類型設定為「deflate64」(或任何不支援的類型)。 此活動會順利執行,並產生以 zip 檔案包含的文字檔。 不過,檔案中的文字有問題,而且此檔案似乎已損毀。 在本機解壓縮此檔案時,沒有問題。
原因:您的 zip 檔案會由 「deflate64」 演算法壓縮,而 Data Factory 的內部 zip 連結庫僅支援 “deflate”。如果 zip 檔案是由 Windows 系統壓縮,而整體檔案大小超過特定數目,則 Windows 預設會使用 Data Factory 不支援的 “deflate64”。 另一方面,如果檔案大小較小,或使用支援指定壓縮演算法的某些第三方 zip 工具,則 Windows 預設會使用「deflate」。
提示
實際上,Data Factory 和 Synapse Analytics 中的二進位格式和 Data Factory 和 Azure Synapse Analytics 中分隔的文字格式,都清楚指出 Data Factory 中不支援「deflate64」格式。
執行管線會以字串形式將陣列參數傳遞至子管線
錯誤訊息: Operation on target ForEach1 failed: The execution of template action 'MainForEach1' failed: the result of the evaluation of 'foreach' expression '@pipeline().parameters.<parameterName>' is of type 'String'. The result must be a valid array.
原因:即使您在執行管線中建立陣列類型的參數 (如下圖所示),管線還是會失敗。
這是因為酬載會從父系管線傳遞至子系作為字串。 當我們檢查傳遞至子管線的輸入時,就會看到它。
建議:若要解決此問題,我們可以套用 create array 函數,如下圖所示。
然後我們的管道就成功了。 我們可以在輸入方塊中看到傳遞的參數是陣列。
相關內容
如需更多疑難排解的協助,請嘗試下列資源: