我正在调查我编写的定期运行的作业中的数据正确性问题,该问题似乎是由BigQuery以非原子方式两次重写同一张表引起的。更具体地说,我有同一查询的两个副本同时运行(由于重试逻辑),两个副本都设置为覆盖同一表(使用WRITE_TRUNCATE选项),并且生成的表每行都有两个副本。我期望一个查询用查询结果写一个表,而另一个查询用相同的结果覆盖它,而不是以一个双倍大小的表结尾。
在设计系统时,我的理解是所有BigQuery操作都是原子操作(基于大查询中的原子插入,我可以安全地查询被WRITE_TRUNCATE替换的BigQuery表,并且在重新填充其基础表时视图失败))。是我遇到了bug,还是我误解了我可以期望的确切保证?
纵观历史,在过去一周中,至少有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”,但是表具有每个(替代项,bingo_id)对中的两个。
| 归档时间: |
|
| 查看次数: |
519 次 |
| 最近记录: |