BigQuery 流式插入使用模板表数据可用性问题

Posted

技术标签:

【中文标题】BigQuery 流式插入使用模板表数据可用性问题【英文标题】:BigQuery streaming insert using template tables data availability issue 【发布时间】:2016-02-11 22:16:57 【问题描述】:

我们已经使用 BigQuery 一年多了,没有任何问题。我们每隔几个小时将数据作为批处理作业加载一次,并且通常可以立即使用。

我们刚刚开始尝试使用模板表进行流式插入。在我们的第一次测试中,我们没有发现任何错误,并且数据立即显示出来。该测试创建了大约 120 个表。对表格进行简单的选择计数(使用 web ui)得出了正确的约 8000 行总数。经过几个小时的流式传输后,总数降至约 1400 行。

不确定发生了什么,我们删除了数据集,重新创建了模板表并重新运行了流式传输。这一次,表格立即出现,但数据没有。在我们第三次尝试时,桌子本身没有出现超过几个小时。我们正在进行第四次尝试,这次我们只流式传输属于一个表的数据。表格马上就出现了,但是过了一个多小时,数据没有出现。

流服务使用最新的 Java 库,一次只插入一条记录并记录响应。响应始终是 "kind":"bigquery#tableDataInsertAllResponse" 并且没有错误。

任何试图了解正在发生的事情的帮助都会很棒。谢谢。

【问题讨论】:

如果你能给我们你的项目/模板表/后缀,我们可以看看。也就是说,可能会有缓存交互起作用...如果您删除表,您可能需要等待几分钟让我们的缓存清除,然后再尝试再次流式传输。否则,我们会将您的插入绑定到您已删除的表...然后删除这些行(因为我们认为与它们关联的表已消失)。 肖恩,感谢您的快速回复。我们确实在删除表后等待了大约 10 分钟,然后才再次开始流式传输。我们将通过删除表再次尝试此测试,等待一个小时(只是为了确保)并尝试流式传输。如果我们仍然发现问题,我们将与您联系并提供项目和其他详细信息。再次感谢您。 不知道这是否与昨天推送的更新有关,并且出现了一些严重问题,因此在BQ上发生了一个事件:status.cloud.google.com/incident/bigquery/18013 @Pentium10 感谢您的指点。流式传输数据时我没有收到任何错误,所以这可能是别的东西 @SeanChen 我们在删除表格后给了它几个小时的冷却时间。然后我们重新开始流式传输。我们的日志显示我们流式传输了 11094 行,而在 BigQuery 中我们只看到 8207 行。 【参考方案1】:

看起来我们已经发现了问题。似乎模板表路径中存在竞争 only 导致我们的系统认为第一块数据已被用户操作删除(表截断 - 它显然不是),并且是掉了。我们已经确定了修复程序,并将尝试尽快推出修复程序。

感谢您告诉我们!

【讨论】:

“数据块”有多大? @FooL 大小不同。这取决于您插入流数据的速度。顺便说一句,现在应该修复比赛条件。 第二个说明:竞争只存在于生成的模板表被删除,然后由流系统重新创建。 我刚刚尝试过,但仍然出现错误:'exchange-reporting-dw:bqjob_r3888baca5e773dca_00000152fcea678f_1':未找到:表 exchange-reporting-dw:reporting_dw.exchange_campaign_staging_tmpl_2016_02_19 我应该sleep 在删除之后再流式传输吗?

以上是关于BigQuery 流式插入使用模板表数据可用性问题的主要内容,如果未能解决你的问题,请参考以下文章

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

Bigquery 流式插入使用具有空字段的数据流

如何在展平嵌套字段后将数据​​从一个 bigquery 表流式插入到另一个表?

将超过 7 天的数据插入分区 BigQuery 表

使用流式 API 更新新列后无法向 BigQuery 表插入新值

BigQuery 使用流式插入 API 保证最终一致性