GoogleApiException:流式传输到 BigQuery 时,Google.Apis.Requests.RequestError 后端错误 [500]
Posted
技术标签:
【中文标题】GoogleApiException:流式传输到 BigQuery 时,Google.Apis.Requests.RequestError 后端错误 [500]【英文标题】:GoogleApiException: Google.Apis.Requests.RequestError Backend Error [500] when streaming to BigQuery 【发布时间】:2017-02-19 16:12:15 【问题描述】:我在过去一年左右从 Azure 中用 c# 编写的服务将数据流式传输到 BigQuery,最近开始出现越来越多的以下错误(大多数请求成功):
消息:[GoogleApiException: Google.Apis.Requests.RequestError An 发生内部错误,无法完成请求。 [500] 错误 [ 消息[发生内部错误,请求无法完成。] Location[ - ] Reason[internalError] Domain[global] ] ]
这是我在服务中使用的代码:
public async Task<TableDataInsertAllResponse> Update(List<TableDataInsertAllRequest.RowsData> rows, string tableSuffix)
var request = new TableDataInsertAllRequest Rows = rows, TemplateSuffix = tableSuffix;
var insertRequest = mBigqueryService.Tabledata.InsertAll(request, ProjectId, mDatasetId, mTableId);
return await insertRequest.ExecuteAsync();
【问题讨论】:
【参考方案1】:与任何其他云服务一样,BigQuery 不提供 100% 的正常运行时间 SLA(实际上是 99.9%),因此遇到此类暂时性错误的情况并不少见。我们也经常在我们的应用程序中收到它们。
您需要在应用程序中构建指数退避和重试逻辑来处理此类错误。执行此操作的一个好方法是使用队列将数据流式传输到 BigQuery。这就是我们所做的,对我们来说效果很好。
更多信息:
-
https://cloud.google.com/bigquery/troubleshooting-errors
https://cloud.google.com/bigquery/loading-data-post-request#exp-backoff
https://cloud.google.com/bigquery/streaming-data-into-bigquery
https://cloud.google.com/bigquery/sla
【讨论】:
指数退避很不错,但在此特定服务中不是强制性的,因为它更像是一种监控服务。这项服务已经上线了大约一年,我们在过去两个月开始收到这些错误,而且数量还在增加。 您可以通过您的 Google 支持渠道提出请求,但我很确定他们会给您相同类型的响应。当我们这样做时,他们告诉了我们。 谢谢格雷厄姆!我试试看。以上是关于GoogleApiException:流式传输到 BigQuery 时,Google.Apis.Requests.RequestError 后端错误 [500]的主要内容,如果未能解决你的问题,请参考以下文章
直接流式传输到 BigQuery 与通过 Google Pub/Sub + Dataflow 流式传输的优缺点
尝试列出非根 Google Drive 文件夹中的文件时获取 Google.GoogleApiException 'File not found: [404]'