我正在调查我编写的定期运行的作业中的数据正确性问题,而这个问题似乎是由BigQuery以非原子方式两次覆盖同一个表引起的。更具体地说,我有两个同时运行的同一个查询的副本(由于重试逻辑),两个都设置为覆盖同一个表(使用WRITE_TRUNCATE选项),结果表有每个行的两个副本。我期待一个查询用查询结果编写一个表,另一个查询用相同的结果覆盖它,而不是用一个双倍大小的表结束。
我在设计系统时的理解是所有BigQuery操作都是原子的(基于atomic inserts in big query,Can I safely query a BigQuery table being replaced with WRITE_TRUNCATE和Views are failing when their underlying table is repopulated)。问题是我遇到了一个错误,还是我误解了我可以期待的确切保证?
纵观历史,过去一周内至少发生了4起案件。
以下是导致此情况发生的时间表(具体细节适用于最明显的案例):
以下是一个例子:
首次查询工作:124072386181:job_tzqbfxfLmZv_QMYL6ozlQpWlG5U
第二个查询工作:124072386181:job_j9_7uJEjtvYbyeVmEVP0u2er9Lk
结果表:124072386181:bigbingo_history.video_task_companions_conversions_2014_04_30_16
另一个例子:
首次查询职位:124072386181:job_TQJzGabFT9FtHI05ftTkD5O8KKU
第二个查询工作:124072386181:job_5hogbjnLX_5a2opEJl9Jacnn53s
表:124072386181:bigbingo_history.Item_repetition__Elimination_conversions_2014_04_27_16
自从这些查询运行以来,尚未触及表(除了第一个表的模式添加之外),因此它们仍然包含重复的行。确认这一点的一种方法是查看所有查询都有" GROUP BY替代,bingo_id",但这些表有两个(alternative,bingo_id)对。
答案 0 :(得分:3)
我们遇到了一个错误,其中write-truncate可能会在某些情况下最终附加。我们昨天(5月22日)发布了修复程序,从那以后还没有看到任何问题的进一步发生。