BigQuery 插入请求的 DEADLINE_EXCEEDED 异常

Posted

技术标签:

【中文标题】BigQuery 插入请求的 DEADLINE_EXCEEDED 异常【英文标题】:DEADLINE_EXCEEDED exception to BigQuery insert request 【发布时间】:2017-09-28 04:08:21 【问题描述】:

我今天观察到这个问题,BigQuery 向流式插入请求返回了 DEADLINE_EXCEEDED 异常。错误响应如下:

"insertErrors":["errors":["debugInfo":"bigtable::Deadline missed: /BTI_TabletServer.Apply to 10.73.63.65:25806 : DEADLINE_EXCEEDED","location":"","message":"","reason":"timeout"],"index":5,"errors":["debugInfo":"bigtable::Deadline missed: /BTI_TabletServer.Apply to 10.73.63.65:25806 : DEADLINE_EXCEEDED","location":"","message":"","reason":"timeout"],"index":6],"kind":"bigquery#tableDataInsertAllResponse"

即使在 3 到 4 次重试后,我仍然收到此错误。我尝试插入的行数约为 100,每行的大小非常小(小于 10kB)。如果这是客户端问题,谁能告诉我?

【问题讨论】:

【参考方案1】:

BigQuery 的 SLA 为 99.99%。它不是 100%(就像所有其他云/服务一样)。这意味着你会时不时地遇到这样的瞬态错误——尤其是在流式传输时。因此,您需要在您的应用程序/代码/设计中考虑这一点,并使用指数退避和重试技术以及您在其他地方消费和处理的某种队列(例如 Pub/Sub、SQS)。

【讨论】:

以上是关于BigQuery 插入请求的 DEADLINE_EXCEEDED 异常的主要内容,如果未能解决你的问题,请参考以下文章

BigQuery:插入行,但未写入

我们可以在 Big Query 中使用 post api 请求插入多行吗?

BigQuery 流式插入在 GKE 上失败

如何在 bigquery 中转储具有未知内容的 json?

使用 POST 请求和 Java 客户端库加载到 BigQuery 的任何示例?

流式 BigQuery API