为了保持列的唯一性,我的几个客户将数据流式传输到BQ中的临时表(如果不存在于主表中,则重试2次,间隔10分钟),并使用另一个cron作业每隔几分钟将临时表合并到一个列分区表中。
如果临时表被合并到主表中,我需要截断它,但似乎我的客户端一直都在流式传输数据。这里有什么推荐吗?
发布于 2018-07-22 09:32:24
警报:不要截断正在接收流结果的表的。
请参阅https://cloud.google.com/bigquery/troubleshooting-errors#streaming
删除和/或重新创建表可以创建一段时间,其中流式插入被有效地递送到旧表,并且将不会出现在新创建的表中。
截断表的数据(例如,通过使用WRITE_TRUNCATE的writeDisposition的查询作业)可能会类似地导致一致性期间的后续插入被删除。
有关流式处理到BigQuery时的替代最佳做法,请参见:
在这种情况下-为什么不让您的几个客户端写入Pub/Sub呢?然后,您可以使用Dataflow将此数据移动到永久表中。
额外的好处:发布/订阅+数据流+ BigQuery可以保证“恰好一次”交付。
https://stackoverflow.com/questions/51460947
复制相似问题