为了保持列的唯一性,我的几个客户端将数据流式传输到BQ的登台表中(如果主表中不存在,则每隔10分钟重试2次),然后使用另一个cron作业将登台表合并到列中每隔几分钟对表进行分区。
如果将登台表合并到主表中,我需要将其截断,但是看来我的客户端一直都在流传输数据。这里有什么建议吗?
答案 0 :(得分:0)
ALERT:请勿截断正在接收流式传输结果的表。
请参见https://cloud.google.com/bigquery/troubleshooting-errors#streaming:
删除和/或重新创建表可能会造成一段时间,在此期间,流插入会有效地传递到旧表,而不会出现在新创建的表中。
截断表的数据(例如,通过使用WRITE_TRUNCATE的writeDisposition的查询作业)可能会导致一致性期间的后续插入被丢弃。
有关流向BigQuery时的替代最佳做法,请参阅:
在这种情况下-为什么不让您的几个客户端写到Pub / Sub?然后,您可以使用Dataflow将这些数据移动到永久表中。
奖金:发布/订阅+数据流+ BigQuery可以保证“恰好一次”投放。