使用模板表的BigQuery流插入 - 503错误

时间:2018-03-17 00:50:07

标签: google-bigquery streaming

我们一直在两个数据集上使用流式插入,一个使用日期分区表,另一个使用非日期分区。他们在很长一段时间内(一年多)都做得很好。

最近我们注意到BigQuery更频繁地响应503错误。 15%到50%的任何时间。

在尝试分析问题时,我们构建了测试客户端,它只完成了1个记录的流式传输,并使用了template-suffix选项。我们看到一种我们以前从未见过的非常奇怪的行为。以下是场景:

  1. templateSuffix ='xxx'和tableId ='sessions_',其中sessions_xxx不存在。这很有效!
  2. templateSuffix ='yyy'和tableId ='sessions_',其中sessions_yyy不久前存在。这失败了! (503)
  3. templateSuffix ='xxx'和tableId ='sessions_',其中sessions_xxx是由第一个测试创建的。这很有效!
  4. 我们在使用API Explorer时也会看到相同的行为。

    由于某些未知原因,我们的生产系统仍然只能以前面提到的速率失败,但测试失败了。生产系统位于数据中心,但测试正在我们的办公室进行。

    看起来503是全能错误,我们甚至试图只传递一个字段以确保它不是数据。也没有运气。场景是一致的。

    没有模板后缀的流媒体适用于长时间存在的表格,而新创建的表格使我们相信问题似乎与模板后缀功能有关。

    不确定是否相关(可能不是),但在使用日期分区表流式传输到第二个数据集时,错误率非常相似。但另外,当insertAll调用没有错误响应时,大约40%的时间即使在一天之后数据也不会出现在表中。

1 个答案:

答案 0 :(得分:0)

您最有可能遇到一个已知错误,即抛出INTERNAL_ERROR而不是SCHEMA_INCOMPATIBLE。所以基本上系统错误地返回503错误,而原因是表模式中的错误 - 生成的表具有与模板表不同的模式。应该由流媒体系统自动从模板表创建生成的表。