对 Azure 数据工厂中的管道业务流程和触发器进行故障排除
适用于:Azure 数据工厂
Azure Synapse Analytics
Azure 数据工厂中的“管道运行”用于定义管道执行实例。 例如,假设你有一个管道,它在上午 8:00、9:00 和 10:00 点运行。 在这种情况下,将有三次独立的管道运行。 每次管道运行都有唯一的管道运行 ID。 运行 ID 是标识该特定管道运行的全局唯一标识符 (GUID)。
管道运行通常通过将自变量传递给管道中定义的参数进行实例化。 你可以手动运行管道,也可以使用触发器来这样做。 有关详细信息,请参阅 Azure 数据工厂中的管道执行和触发器。
你在 Azure 中的专用终结点上运行了一个数据工厂和一个函数应用。 你正在尝试运行一个与该函数应用交互的管道。 你已尝试三种不同的方法,但其中一种方法返回了错误“错误的请求”,另两种方法返回了“103 禁止错误”。
原因
Azure 数据工厂目前不支持对函数应用使用专用终结点连接器。 Azure Functions 拒绝了调用,因为它已配置为仅允许从专用链接进行连接。
分辨率
创建一个 PrivateLinkService 终结点并提供函数应用的 DNS。
原因
很多情况下,取消管道运行后,管道监视仍然显示进度状态。 此问题是由浏览器缓存问题导致的。 你也可能没有合适的监视筛选器。
分辨率
刷新浏览器,并应用正确的监视筛选器。
原因
如果你要复制的文件夹包含的文件具有不同架构(例如可变列数、不同分隔符、引号字符设置或某个数据问题),则管道可能会引发此错误:
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,'
分辨率
创建复制活动时选择“二进制复制”选项。 这样一来,若要将数据从一个数据湖批量复制或迁移到另一个数据湖,数据工厂不需打开文件来读取架构。 相反,Azure 数据工厂会将每个文件视为二进制文件,并将其复制到其他位置。
问题
错误消息:
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 订阅和服务的限制、配额与约束。
分辨率
- 在不同的触发时间运行你的管道。
- 创建一个新的集成运行时,并将你的管道拆分到多个集成运行时中。
问题
错误消息:
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 数据工厂成员被分配到“参与者”角色时,管道才能使用 Web 活动调用 ADF REST API 方法。 必须首先配置 Azure 数据工厂托管标识并将它添加到“参与者”安全角色。
分辨率
在 Web 活动的“设置”选项卡中使用 Azure 数据工厂的 REST API 之前,必须先配置安全性。 当且仅当 Azure 数据工厂托管标识被分配到“参与者”角色时,Azure 数据工厂管道才能使用 Web 活动调用 ADF REST API 方法。 首先打开 Azure 门户,然后单击左侧菜单中的“所有资源”链接。 单击“添加角色分配”框中的“添加”按钮,选择“Azure 数据工厂”,添加具有“参与者”角色的 ADF 托管标识。
原因
Azure 数据工厂业务流程允许条件逻辑,使用户能够根据前面的活动的结果采用不同的路径。 它允许四个条件路径:“成功时(默认通过)”、“失败时”、“完成时”和“跳过时”。
Azure 数据工厂会评估所有叶级活动的结果。 仅当所有叶都成功时,管道结果才是成功的。 如果跳过了某个叶活动,则会改为评估其父活动。
分辨率
- 按照如何处理管道故障和错误一文的说明实施活动级检查。
- 按照通过工厂进行查询一文的说明使用 Azure 逻辑应用来定期监视管道。
- 以可视方式监视管道
原因
你可能需要按特定时间间隔(例如 5 分钟)监视失败的 Azure 数据工厂管道。 可以使用终结点从数据工厂查询和筛选管道运行。
分辨率
- 可以根据按照工厂进行查询中所述,将 Azure 逻辑应用设置为每隔 5 分钟查询所有失败的管道。 然后,可将事件报告给票证系统。
- 你可以重新运行管道和活动,如此文所述。
- 如果已取消活动,或者出现故障,可按照在活动出现故障后重新运行来重新运行活动。
- 以可视方式监视管道
原因
ForEach 中的并行度是最大并行度。 我们无法保证同时发生特定数量的执行,但此参数保证永不超出所设置的值。 应将此值视为在控制对源和接收器的并发访问时应用的限制。
有关 ForEach 的已知事实
- Foreach 具有名为“批计数”(n) 的属性,其中默认值为 20,最大值为 50。
- 批计数 (n) 用于构造 n 个队列。
- 每个队列按顺序运行,但可以并行运行多个队列。
- 队列是预先创建的。 这意味着,在运行时不会重新平衡队列。
- 在任意时间,最多只能处理每个队列的一个项。 这意味着,在任意给定时间,最多会处理 n 个项。
- foreach 的总处理时间等于最长队列的处理时间。 这意味着 foreach 活动取决于队列的构造方式。
分辨率
- 不应在并行运行的 For Each 中使用 SetVariable 活动。
- 考虑到队列的构造方式,客户可以通过设置多个 foreach(每个 foreach 的项处理时间相似)来提高 foreach 性能。
- 这可以确保并行(而不是按顺序)处理长时间运行。
原因
发生这种情况的原因有多种,例如达到了并发限制、服务中断、网络故障,等等。
分辨率
并发限制:如果管道具有并发策略,请确认没有正在运行的旧管道。
监视限制:转到创作画布,选择你的管道,并确定是否已为其分配了并发属性。 如果已分配,请转到“监视”视图,确保过去 45 天内没有任何正在进行的事项。 如果有某个事项正在进行,则可以取消它,然后新的管道运行应当会启动。
暂时性问题:运行可能受到了暂时性问题、凭据失败、服务中断等问题的影响。如果发生这种情况,Azure 数据工厂有一个内部恢复过程可以监视所有运行并在发现出错时启动这些运行。 你可以重新运行管道和活动,如此文所述。 如果已取消活动或由于因活动失败重新运行而失败,可以重新运行活动。此过程每隔一小时发生一次,因此如果运行停滞超过一小时,请创建支持案例。
原因
如果你尚未对数据流或优化的 SHIR 实现生存时间功能,则可能会发生这种情况。
分辨率
- 如果每个复制活动最多需要 2 分钟才能开始,而问题主要出在虚拟网络联接(相较于Azure IR),这可能是复制性能问题。 若要查看故障排除步骤,请参阅复制性能改进。
- 可以使用“生存时间”功能来减少数据流活动的群集启动时间。 请查看数据流集成运行时。
原因
如果你未根据你的工作负载纵向扩展 SHIR,则可能会发生这种情况。
分辨率
- 如果遇到 SHIR 的容量问题,请升级 VM 以增加节点来平衡活动。 如果收到关于自承载 IR 一般性故障或错误、自承载 IR 升级或自承载 IR 连接问题(可能会生成长队列)的错误消息,请转到自承载集成运行时故障排除。
原因
由于各种原因,可能会出现与长队列相关的错误消息。
分辨率
- 如果通过连接器收到了来自任何源或目标的错误消息(可能会生成长队列),请参阅连接器故障排除指南
- 如果收到有关映射数据流的错误消息(可能会生成长队列),请参阅数据流故障排除指南。
- 如果收到有关 Databricks、自定义活动或 HDI 等其他活动的错误消息(可能会生成长队列),请参阅活动故障排除指南
- 如果收到有关运行 SSIS 包(可能会生成长队列)的错误消息,请转到 Azure-SSIS 包执行故障排除指南和 Integration Runtime 管理故障排除指南。
原因
这是一个用户错误,因为触及 management.chinacloudapi.cn 的 JSON 有效负载已损坏。 由于用户调用未到达 ADF 服务层,因此不会存储任何日志。
分辨率
使用 Microsoft Edge/Chrome 浏览器开发人员工具,从 ADF 门户对 API 调用执行网络追踪。 你会看到有问题的 JSON 有效负载,这可能是由特殊字符(例如 $
)、空格和其他类型的用户输入导致的。 修复字符串表达式后,你将继续在浏览器中执行剩余的 ADF 使用情况调用。
原因
你正在调试模式下运行 ADF。
分辨率
在触发器模式下执行管道。
原因
你更改了协作分支以删除存储事件触发器。 你在尝试发布并遇到了“Trigger deactivation error
”消息。
分辨率
这是由于锁定了用于事件触发器的存储帐户。 解锁帐户。
原因
可能是由于 Web 浏览器出现网络或缓存问题而导致表达式生成器无法加载。
分辨率
请将 Web 浏览器升级到受支持的浏览器的最新版本,清除站点的 Cookie,然后刷新页面。
原因
你链接了许多活动。
分辨率
可以将管道拆分为子管道,并通过 ExecutePipeline 活动将它们衔接在一起。
原因
你尚未优化映射数据流。
分辨率
- 处理大量数据和转换时,请使用内存优化计算。
- 缩减批大小,以防出现 For Each 活动。
- 纵向扩展数据库和仓库,以匹配 ADF 的性能。
- 对并行运行的活动使用单独的 IR(集成运行时)。
- 相应地调整源和接收器上的分区。
- 请参阅数据流优化
原因
失败类型是用户配置问题。 将参数字符串(而不是数组)传递到子管道。
分辨率
例如,如果想传递参数“a”和“b”,则将管道参数的执行管道活动输入为 @createArray('a','b')。 例如,如果想传递数字,请使用 @createArray(1,2,3)。 使用 createArray 函数强制将参数作为数组传递。