針對 Azure Data Factory 中的管線協調流程和觸發程序進行疑難排解

適用於:Azure Data Factory Azure Synapse Analytics

提示

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

在 Azure Data Factory 中,「管線執行」可定義管線執行的執行個體。 例如,假設您的管線會在上午 8 點、9 點和 10 點執行。 在本案例中,有三個單獨的管線執行。 每個管線執行都有唯一的管線執行識別碼。 執行識別碼是一組全域唯一識別碼 (GUID),用於定義特定的管線執行。

將引數傳遞給管線中定義的參數,通常可將管線執行具現化。 您可以用手動方式或使用觸發程序來執行管線。 如需詳細資訊,請參閱 Azure Data Factory 中的管線執行和觸發程序

常見問題、原因和解決方案

Azure Functions 應用程式管線會擲回私人端點連線錯誤

您在 Azure 中的私人端點上執行 Data Factory 和函數應用程式。 您嘗試執行與函數應用程式互動的管線。 您已嘗試三種不同的方法,但其中一個方法傳回錯誤「不正確的要求」,而其他兩個方法則傳回「403 禁止錯誤」。

原因

Data Factory 目前針對函數應用程式不支援私人端點連接器。 Azure Functions 拒絕呼叫,因為其設定為只允許來自私人連結的連線。

解決方法

建立 PrivateLinkService 端點,並提供函數應用程式的 DNS。

管線執行已取消,但是監視器仍會顯示進度狀態

原因

當您取消管線執行時,管線監視通常仍會顯示進度狀態。 這是因為瀏覽器快取問題而發生。 您也可能沒有正確的監視篩選。

解決方法

重新整理瀏覽器並套用正確的監視篩選。

複製管線時,您會看到「DelimitedTextMoreColumnsThanDefined」錯誤

原因

如果您要複製的資料夾包含具有不同結構描述的檔案,例如不同資料行數目、不同的分隔符號、引號字元設定或某些資料問題,Data Factory 管線可能會擲回此錯誤:

Operation on target Copy_sks failed: Failure happened on 'Sink' side. ErrorCode=DelimitedTextMoreColumnsThanDefined, 'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException, Message=Error found when processing 'Csv/Tsv Format Text' source '0_2020_11_09_11_43_32.avro' with row number 53: found more columns than expected column count 27., Source=Microsoft.DataTransfer.Common,'

解決方法

在建立複製活動時選取 [二進位複製] 選項。 如此一來,針對將資料從某個資料湖大量複製或移轉至另一個資料湖,Data Factory 不會開啟檔案來讀取結構描述。 相反地,Data Factory 會將每個檔案視為二進位檔,並將其複製到其他位置。

當您達到資料流程整合執行階段的容量限制時,管線執行會失敗

問題

錯誤訊息:

Type=Microsoft.DataTransfer.Execution.Core.ExecutionException,Message=There are substantial concurrent MappingDataflow executions which is causing failures due to throttling under Integration Runtime 'AutoResolveIntegrationRuntime'.

原因

您已達到整合執行階段的容量限制。 您可能同時使用相同的整合執行階段來執行大量的資料流程。 如需詳細資訊,請參閱 Azure 訂用帳戶和服務限制、配額與限制

解決方法

  • 在不同的觸發時間執行管線。
  • 建立新的整合執行階段,並將管線分割成多個整合執行階段。

在 Web 活動中叫用 REST API 時發生管線執行錯誤

問題

錯誤訊息:

Operation on target Cancel failed: {“error”:{“code”:”AuthorizationFailed”,”message”:”The client ‘<client>’ with object id ‘<object>’ does not have authorization to perform action ‘Microsoft.DataFactory/factories/pipelineruns/cancel/action’ over scope ‘/subscriptions/<subscription>/resourceGroups/<resource group>/providers/Microsoft.DataFactory/factories/<data factory name>/pipelineruns/<pipeline run id>’ or the scope is invalid. If access was recently granted, please refresh your credentials.”}}

原因

管線只有在 Azure Data Factory 成員獲指派參與者角色時,才能使用 Web 活動來呼叫 ADF REST API 方法。 您必須先設定 Azure Data Factory 受控識別,並將其新增至參與者安全性角色。

解決方法

在 Web 活動的 [設定] 索引標籤中使用 Azure Data Factory 的 REST API 之前,必須先設定安全性。 Azure Data Factory 管線只有在 Azure Data Factory 受控識別獲指派參與者角色時,才能使用 Web 活動來呼叫 ADF REST API 方法。 從開啟 Azure 入口網站開始,然後按一下左側功能表上的 [所有資源] 連結。 按一下 [新增角色指派] 方塊中的 [新增] 按鈕,選取 [Azure Data Factory] 以新增具有參與者角色的 ADF 受控識別。

如何檢查和分支管線中的活動層級成功和失敗

原因

Azure Data Factory 協調流程允許條件式邏輯,並且讓使用者根據先前活動的結果採取不同的路徑。 允許四個條件式路徑:成功時 (預設通過)、失敗時完成時略過時

Azure Data Factory 會評估所有分葉層級活動的結果。 只有在所有分葉都成功時,管線結果才會成功。 如果略過分葉活動,我們會改為評估其父活動。

解決方法

如何以固定間隔監視管線失敗

原因

您可能需要以間隔監視失敗的 Data Factory 管線,例如 5 分鐘。 您可以使用端點,從資料處理站查詢和篩選管線執行。

解決方法

平行處理原則的程度增加不會導致更高的輸送量

原因

ForEach 中的平行處理原則程度實際上就是平行處理原則的最大程度。 我們無法保證在相同時間會發生特定數量的執行,但此參數可保證我們絕不會超過設定的值。 您應該將其視為限制,在控制對來源和接收器的平行存取時加以運用。

關於 ForEach 的已知事實

  • Foreach 具有名為 batch count(n) 的屬性,其預設值為 20,最大值為 50。
  • 批次計數 n 可用來建構 n 個佇列。
  • 每個佇列會依序執行,但您可以平行執行多個佇列。
  • 佇列已預先建立。 這表示在執行階段期間,佇列不會重新平衡。
  • 無論何時,每個佇列最多都只會處理一個項目。 這表示在任何指定的時間,最多會處理 n 個項目。
  • ForEach 總處理時間等於最長佇列的處理時間。 這表示 ForEach 活動取決於佇列的建構方式。

解決方法

  • 您不應在平行執行的 For Each 內使用 SetVariable 活動。
  • 考量到佇列的建構方式,客戶可以藉由設定多個 ForEach 來改善 ForEach 效能 (讓每個 ForEach 的項目具有類似的處理時間)。
  • 這可以確保長時間執行會以平行方式處理,而不是依序處理。

管線狀態已佇列或停滯許久

原因

這可能會因為各種原因而發生,例如達到並行限制、服務中斷、網路失敗等等。

解決方法

  • 並行限制:如果您的管線具有並行存取原則,請確定並未執行舊管線。

  • 監視限制:移至 ADF 製作畫布、選取您的管線,並判斷是否有指派的並行屬性。 如果有,請移至監視檢視,並確定過去 45 天內沒有任何進行中的執行。 如果正在執行,您可加以取消,如此新的管線執行應該就會啟動。

  • 暫時性問題:您的執行可能受到暫時性網路問題、認證失敗、服務中斷等影響。如果發生這類問題,Azure Data Factory 有內部復原流程可監視所有執行,並在發現錯誤時啟動這些執行。 您可以重新執行管線和活動,如這裡所述。 如果您已取消活動,或根據從活動失敗重新執行而失敗,您可以重新執行活動。此流程每小時會執行一次,如果您的執行停滯超過一小時,請建立支援案例。

ADF 複製和資料流程中活動的啟動時間較長

原因

如果您尚未實作資料流程或最佳化 SHIR 的存留時間功能,就可能會發生這種情況。

解決方法

  • 如果每個複製活動最多需要 2 分鐘的時間來啟動,而且問題主要發生在 VNet 聯結上 (相對於Azure IR),則這可能是複製效能問題。 若要檢閱疑難排解步驟,請移至複製效能改進
  • 您可以使用存留時間功能來減少資料流程活動的叢集啟動時間。 請參閱資料流程整合執行階段

達到 SHIR (自我裝載整合執行階段) 中的容量問題

原因

如果您尚未根據工作負載擴大 SHIR,就可能會發生這種情況。

解決方法

  • 如果您遇到 SHIR 的容量問題,請升級 VM 以增加節點來平衡活動。 如果您收到有關自我裝載 IR 一般失敗或錯誤、自我裝載 IR 升級,或可能會產生長佇列的自我裝載 IR 連線問題,請移至針對自我裝載整合執行階段進行疑難排解

ADF 複製和資料流程的長時間佇列所造成的錯誤訊息

原因

長時間佇列相關的錯誤訊息可能會因為各種原因而出現。

解決方法

錯誤訊息 - "code":"BadRequest", "message":"null"

原因

這是使用者錯誤,因為達到 management.azure.com 的 JSON 承載已損毀。 不會儲存任何記錄,因為使用者呼叫未觸達 ADF 服務層。

解決方法

使用 Edge/Chrome 瀏覽器開發人員工具,從 ADF 入口網站執行 API 呼叫的網路追蹤。 您會看到違規的 JSON 承載,這可能是因為特殊字元 (例如 $)、空格和其他類型的使用者輸入。 修正字串運算式之後,您將會繼續進行瀏覽器中的其餘 ADF 使用方式呼叫。

ForEach 活動不會以平行模式執行

原因

您正在偵錯模式中執行 ADF。

解決方法

以觸發程序模式執行管線。

無法發佈,因為帳戶已鎖定

原因

您在協作分支中進行變更,以移除儲存體事件觸發程序。 您嘗試發佈並遇到 Trigger deactivation error 訊息。

解決方法

這是因為用於事件觸發程序的儲存體帳戶已被鎖定。 解除鎖定帳戶。

運算式產生器無法載入

原因

運算式產生器因為網頁瀏覽器的網路或快取問題而無法載入。

解決方法

將網頁瀏覽器升級至支援瀏覽器的最新版本、清除網站的 Cookie,然後重新整理頁面。

"Code":"BadRequest","message":"ErrorCode=FlowRunSizeLimitExceeded

原因

您已鏈結許多活動。

解決方法

您可以將管線分割成子管線,並將其與 ExecutePipeline 活動一起複製。

如何使用對應資料流程最佳化管線,以避免在執行期間發生內部伺服器錯誤、並行錯誤等等

原因

您尚未最佳化對應資料流程。

解決方法

  • 處理大量資料和轉換時,請使用記憶體最佳化計算。
  • 針對每個活動減少批次大小。
  • 擴大您的資料庫和倉儲,以符合 ADF 的效能。
  • 針對平行執行的活動,使用個別 IR (整合執行階段)。
  • 據以調整來源和接收器的分割。
  • 請參閱資料流程最佳化

將參數傳遞至子管線時的錯誤碼「BadRequest」

原因

失敗類型是使用者組態問題。 參數字串 (而不是「陣列」) 會傳遞至子管線。

解決方法

舉例來說,如果您想要傳遞參數 'a' 和 'b',則針對管線參數將執行管線活動輸入為 @createArray('a','b')。 例如,如果您想要傳遞數字,則使用 @createArray(1,2,3)。 使用 createArray 函式強制以陣列的形式傳遞參數。

如需更多疑難排解的協助,請嘗試下列資源: