Azure Data Factory复制任务以Google BigQuery为源报GHighThroughputApiError
问题详情
Failure happened on 'Source' side. ErrorCode=UserErrorOdbcOperationFailed,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=ERROR [HY000] [Microsoft][DSI] An error occurred while attempting to retrieve the error message for key 'GHighThroughputApiError' with message parameters ['Error : { code: UNKNOWN, message: Stream removed }'] and component ID 100: Message not found in file "D:\batch\tasks\shared\ODBC Drivers\Microsoft Google BigQuery ODBC Driver_2.4.5.1014\lib.. \ErrorMessages\en-US\SimbaBigQueryODBCMessages.xml",Source=Microsoft.DataTransfer.ClientLibrary.Odbc.OdbcConnector,''Type=System.Data.Odbc.OdbcException,Message=ERROR [HY000] [Microsoft][DSI] An error occurred while attempting to retrieve the error message for key 'GHighThroughputApiError' with message parameters ['Error: { code: UNKNOWN, message: Stream removed }'] and component ID 100: Message not found in file "D:\batch\tasks\ shared\ODBC Drivers\Microsoft Google BigQuery ODBC Driver_2.4.5.1014\lib..\ErrorMessages\en-US\SimbaBigQueryODBCMessages.xml",Source=Microsoft ODBC Driver for Google BigQuery,'
以Google BigQuery为源的ADF复制管道会随机失败,重启任务30秒后可正常执行,已尝试升级Simba ODBC驱动至最新版,问题仍未解决。
可行解决方案
- 调整ADF复制活动批量参数:在BigQuery源配置中,降低
Batch size和Max Rows Per Batch的数值,减少单次请求传输的数据量,避免长连接因超时被断开;同时适当增大Query timeout值,给查询足够的执行时长。 - 配置自动重试策略:在复制活动的
Settings标签下,设置Retry count为3-5次,Retry interval为30秒,让管道自动重试失败任务,规避随机流断开问题。 - 修改ODBC驱动高级配置:
- 禁用驱动配置中的
Use High Throughput API选项,避免高吞吐量模式下的流连接不稳定; - 增大
Socket Timeout参数值,延长连接保持时间; - 调整
Page Size为较小数值,减少每页返回的数据量。
- 禁用驱动配置中的
- 检查网络稳定性:确保自托管集成运行时所在服务器与Google BigQuery的网络连接稳定,避免因网络波动导致TCP连接中断;可尝试切换至更稳定的网络环境,或配置专用网络通道。
- 排查BigQuery配额限制:在Google Cloud Console查看BigQuery项目的配额使用情况,确认是否存在查询并发数、数据扫描量等配额耗尽的情况,必要时申请提升配额。
内容的提问来源于stack exchange,提问作者Oleksandra Trapeznikova

