BigQuery流数据不在表中

时间:2017-01-03 13:41:01

标签: google-bigquery

我有一个ETL进程,可以将数据从mongo集群流式传输到BigQuery。这通过cron每周运行,并在需要时手动运行。我为每个客户都有一个单独的数据集,表格结构相同。

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

之前我曾经见过这种情况,但却无法重新创造。我现在用相同的结果再运行两次。我知道我的代码正在运行,因为其他数据集已正确填充。

表格详细信息中没有“流缓冲区”,运行count(*)查询会返回0响应。我甚至尝试从查询中删除缓存结果,以强制新鲜度 - 但没有任何帮助。

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

是否有其他人在流媒体服务中遇到小问题?

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

1 个答案:

答案 0 :(得分:3)

可能这就是你发生的事情:BigQuery table truncation before streaming not working

如果删除或创建表格,则必须至少等待2分钟才能开始流式传输数据。

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

要解决此问题,您可以在deletecreate操作之后流式传输数据之前等待一段时间,也可以更改策略以上传数据(可能将其保存到某些CSV文件中然后使用job插入方法将数据上传到表中。)