我们最近注意到,在创建新表后的短时间内,流入的数据没有任何异常或错误,只是丢失了。流媒体应该等待任何已知的宽限时间吗?
答案 0 :(得分:1)
在可用于查询之前,在桌面上首次发生流式传输后,会有几秒钟的“预热”时间。如果您停止流式传输到桌面超过24小时然后重新开始,则会有类似的预热时间。
请参阅此处的文档:https://cloud.google.com/bigquery/streaming-data-into-bigquery#dataavailability
答案 1 :(得分:1)
我终于通过逐步打印出跟踪信息来弄清楚发生了什么。这个多线程有助于长期掩盖这个问题。
这是创建表格的原始“缺失数据”代码:
insert = sBIGQUERY.tables().insert(mProjectId, mDataset, table);
logger.info("Table " + tid.toString()+" is created at " + new Date(insert
.execute().getCreationTime()));
其中insert.execute()。getCreationTime()永远不会返回....(我不知道为什么)因此我的剩余进程(将数据放回发送队列等待下一个流)didn'执行。
我将其更改为:
sBIGQUERY.tables().insert(mProjectId, mDataset, table).execute();
logger.info("Table " + tid.toString()+" is created");
它运行正常,我们将所有数据都提供给BQ。
@Jordan Tigani,你知道getCreationTime()永远不会回来的原因吗? (或者在我可以等待的相当长的时间内)