2017-01-03 42 views
0

我有一个ETL流程,它将来自mongo群集的数据流式传输到BigQuery。这通过cron每周运行,并在需要时手动运行。我为每个客户都有一个单独的数据集,并且表结构在它们之间是相同的。BigQuery流数据不在表中

我刚刚运行过程,发现虽然我的所有数据块都从insertAll api返回了“成功”响应({“kind”:“bigquery#tableDataInsertAllResponse”}),但该表为空特定数据集。

我以前曾经见过这种情况,但从未能够重新创建。现在我已经运行了两次,获得了相同的结果。我知道我的代码正在工作,因为其他数据集已正确填充。

表细节中没有'流缓冲区',并且运行count(*)查询返回0响应。我甚至尝试从查询中删除缓存的结果,以强制新鲜 - 但没有任何帮助。

编辑 - 从我的数据流(我保留时间戳日志)10分钟后 - 部分数据现在出现在表中;然而,又过了40分钟,它看起来并没有任何新的数据流入。

是否有其他人在流媒体服务中遇到打嗝?

值得一提的是,我的部分流程是将现有表复制到备份表中,删除原始表并使用最新模式重新创建表。这可能会影响一些特定的边缘情况下的插入?

回答

2

也许这是发生了什么事给你:BigQuery table truncation before streaming not working

如果您删除或创建一个表,你必须等待至少2分钟,开始在它流数据。

由于您提到所有其他表格都正常工作,并且只有具有删除过程的表没有保存数据,因此这可能解释了您正在观察的内容。

要解决这个问题,你既可以在deletecreate操作后流数据或可能改变上传数据(也许它保存到一些CSV文件,然后使用job插入方法上传策略之前等待的时间长一点数据放入表格中)。

相关问题