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 流式传输的优缺点

将音频流式传输到本地网络

将音频流式传输到多个 Web 浏览器

尝试列出非根 Google Drive 文件夹中的文件时获取 Google.GoogleApiException 'File not found: [404]'

在列出的日期范围之外流式传输到分区表 BigQuery

如何将视频从浏览器提交/流式传输到服务器?