尽管更新架构,但BigQuery架构错误

时间:2013-12-16 15:31:52

标签: google-bigquery

我正在尝试运行多个并发作业,以便将大约700K记录加载到单个BigQuery表中。我的代码(Java)根据作业的记录创建模式,并在需要时更新BigQuery模式。

工作流程如下:

  1. 单个作业创建表并设置(初始)架构。
  2. 对于每个加载作业,我们根据作业的记录创建模式。然后我们从BigQuery中提取现有的表模式,如果它不是与作业关联的模式的超集,我们使用新的合并模式更新模式。最后一部分(从拉动现有模式开始)被同步(使用锁定) - 一次只有一个作业执行它。模式的更新使用UPDATE方法,只有在客户端更新方法返回后才会释放锁。
  3. 我希望避免使用此工作流程遇到架构更新错误。我假设一旦客户端从更新作业返回,那么表就会更新,并且正在进行的作业不会受到架构更新的影响。

    尽管如此,我仍然会不时收到架构更新错误。更新方法是原子的吗?我如何知道架构何时实际更新?

1 个答案:

答案 0 :(得分:0)

BigQuery中的更新是原子的,但它们会在作业结束时应用。作业完成后,它确保模式是等效的。如果在作业运行时存在架构更新,则此检查将失败。

我们应该确保模式是兼容的而不是等效的。如果你使用兼容模式进行附加(即你有一个表模式的子集)应该成功,但是目前BigQuery不允许这样做。我会提交一个错误。