我正在尝试运行一个管道,该管道将数据从Cosmos(SQL API(复制到多个表的ADLS gen2。Lookup Activity传递查询列表,Copy Activity使用自托管IR在ForEach中运行。然而,它在第一次迭代后一直失败,出现以下错误:
对目标Copy data1_copy1的操作失败:"接收器"端发生故障。ErrorCode=UserErrorFailedFileOperation,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=上传文件失败,路径为tfs/OU Cosmos Data/LATAM/fact\dl-br-prod。,Source=Microsoft.DataTransfer.Common,'Type=Microsoft.Azure.Documents.RequestTimeoutException,Message=请求超时。
此外,我确信这不是任何一个特定表的问题,因为我尝试过以不同的顺序传递查询,在每次尝试中,传递的第一个查询成功完成,在迭代的其余部分,复制活动运行一段时间,最终失败。
到目前为止,我已经尝试了以下内容:
- 以顺序模式运行ForEach
- 将接收端的块大小(MB(更改为20MB。默认情况下为100MB
您能检查官方MS文档中建议的解决方法吗?因为这涉及自托管IR。
对Azure Data Lake Storage Gen2帐户的请求导致超时错误
原因:该问题是由Azure Data Lake Storage Gen2接收器超时错误引起的,该错误通常发生在自托管集成运行时(IR(计算机上。
推荐:
如果可能的话,将您的自托管IR机器和目标Azure Data Lake Storage Gen2帐户放在同一地区。这会有所帮助避免随机超时错误并产生更好的性能。
检查是否有特殊的网络设置,如ExpressRoute,并确保网络有足够的带宽。我们建议您在以下情况下降低"自托管IR并发作业"设置总体带宽较低。这样做有助于避免网络资源多个并发作业之间的竞争。
如果文件大小适中或较小,请为非二进制副本使用较小的块大小,以减轻这种超时错误。关于更多信息,请参阅Blob存储放入阻止
我得到了微软Cosmos产品团队的回应:
根本原因:
SDK客户端配置了一些Timeout值和请求需要更长的时间。
超时的原因是网关延迟增加(网关无延迟SLA(。这可能是意料之中的事(读取、发送和接收数据的时间往往更长(。
分辨率:
增加客户端中使用的RequestTimeout。
Synapse Data Transfer(使用.NET 2.5.1SDK和拥有Microsoft.DataTransfer应用程序(可以增加在.NET SDK上使用的RequestTimeout设置为更高的值。在更新的SDK中版本,默认情况下此值为65秒。
尽管我们选择完全绕过此路由,并包括SynapseLink或Private Endpoint。