重新创建BigQuery表后,流插入无法正常工作吗?

叶夫根尼·明克维奇(Evgeny Minkevich)

我刚遇到BigQuery一个有趣的问题。

本质上,存在一个批处理作业,该作业在BigQuery中重新创建了一个表-删除了数据-然后立即开始通过流式接口输入新的数据集。

曾经这样工作了一段时间-成功。

最近,它开始丢失数据。

一个小的测试用例已证实了这种情况–如果在重新创建(成功!)表后立即开始数据馈送,则数据集的某些部分将丢失。也就是说,在要送入的4000条记录中,只有2100-3500条可以通过。

我怀疑在成功将表操作(删除和创建)传播到整个环境之前,表创建可能会返回成功,因此数据集的第一部分将被馈送到表的旧副本(在此处进行推测)。

为了确认这一点,我在表创建和开始数据馈送之间设置了超时时间。实际上,如果超时时间少于120秒,则会丢失部分数据集。

如果超过120秒-似乎可以正常运行。

过去没有此超时的要求。我们正在使用美国BigQuery。我是否在这里遗漏了一些明显的东西?

编辑:从下面的Sean Chen提供的评论以及其他一些来源-由于表被缓存的方式以及内部表ID在整个系统中传播的方式,这种行为是可以预期的。BigQuery已针对仅追加类型的操作而构建。改写并不是很容易适应设计的事情,应该避免。

乔丹·提加尼(Jordan Tigani)

由于BigQuery流传输服务器缓存表生成ID(表的内部名称)的方式,因此或多或少会出现这种情况。

您能否提供有关用例的更多信息?删除表然后再次写入同一表似乎很奇怪。

一种解决方法是截断表,而不是删除表。您可以通过运行SELECT * FROM <table> LIMIT 0,并将表作为目标表来执行此操作(您可能希望使用allow_large_results = true并禁用展平,如果您有嵌套数据,这将有所帮助),然后使用write_disposition = WRITE_TRUNCATE。这将清空表,但保留架构。然后,任何随后流式传输的行都将应用于同一表。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

导航回到抖动后重新创建流

来自分类Dev

Terraform(0.12.29)导入无法正常工作;导入成功,但计划显示销毁并重新创建

来自分类Dev

重新创建WPF DataGrid列时,为什么Dispatcher.BeginInvoke无法正常工作?

来自分类Dev

文件可以在分区表和文件系统重新创建后幸存吗?

来自分类Dev

HandsOnTable-从0.11.0升级到0.15.0-beta 2后销毁和重新创建无法正常工作

来自分类Dev

我从数据中删除innodb数据库后无法重新创建它,因为:“表已存在”

来自分类Dev

在Rails中重新创建表

来自分类Dev

SQLAlchemy:如何重新创建表

来自分类Dev

在Rails中重新创建表

来自分类Dev

删除工作表并使用相同的工作表名称重新创建

来自分类Dev

删除工作表并使用相同的工作表名称重新创建

来自分类Dev

无法重新创建mysql用户

来自分类Dev

Windows XP 重新创建已删除的配置文件并且无法正常启动

来自分类Dev

GAE新创建的任务队列已“禁用”,但可以正常工作吗?

来自分类Dev

GAE新创建的任务队列已“禁用”,但可以正常工作吗?

来自分类Dev

在sql server中更改表中的列宽后,是否需要重新创建索引?

来自分类Dev

删除并重新创建 SQL Server 表后如何恢复它?

来自分类Dev

回到主Fragment实例后,FragmentStatePagerAdapter无法重新创建碎片

来自分类Dev

方向更改后每次都会重新创建片段,无法恢复状态

来自分类Dev

回到主Fragment实例后,FragmentStatePagerAdapter无法重新创建碎片

来自分类Dev

取消后无法重新创建和安排计时器增益。为什么?

来自分类Dev

如何重新创建git目录和工作树?

来自分类Dev

在startActivityForResult返回后未重新创建Android parentActivity

来自分类Dev

片段重新创建后,ViewModel不会保留数据

来自分类Dev

更改nix-channel后重新创建链接

来自分类Dev

删除后重新创建内容提供者

来自分类Dev

重新创建活动后,片段重叠

来自分类Dev

重新创建片段后显示异步任务结果

来自分类Dev

更新后不要重新创建存储库

Related 相关文章

  1. 1

    导航回到抖动后重新创建流

  2. 2

    Terraform(0.12.29)导入无法正常工作;导入成功,但计划显示销毁并重新创建

  3. 3

    重新创建WPF DataGrid列时,为什么Dispatcher.BeginInvoke无法正常工作?

  4. 4

    文件可以在分区表和文件系统重新创建后幸存吗?

  5. 5

    HandsOnTable-从0.11.0升级到0.15.0-beta 2后销毁和重新创建无法正常工作

  6. 6

    我从数据中删除innodb数据库后无法重新创建它,因为:“表已存在”

  7. 7

    在Rails中重新创建表

  8. 8

    SQLAlchemy:如何重新创建表

  9. 9

    在Rails中重新创建表

  10. 10

    删除工作表并使用相同的工作表名称重新创建

  11. 11

    删除工作表并使用相同的工作表名称重新创建

  12. 12

    无法重新创建mysql用户

  13. 13

    Windows XP 重新创建已删除的配置文件并且无法正常启动

  14. 14

    GAE新创建的任务队列已“禁用”,但可以正常工作吗?

  15. 15

    GAE新创建的任务队列已“禁用”,但可以正常工作吗?

  16. 16

    在sql server中更改表中的列宽后,是否需要重新创建索引?

  17. 17

    删除并重新创建 SQL Server 表后如何恢复它?

  18. 18

    回到主Fragment实例后,FragmentStatePagerAdapter无法重新创建碎片

  19. 19

    方向更改后每次都会重新创建片段,无法恢复状态

  20. 20

    回到主Fragment实例后,FragmentStatePagerAdapter无法重新创建碎片

  21. 21

    取消后无法重新创建和安排计时器增益。为什么?

  22. 22

    如何重新创建git目录和工作树?

  23. 23

    在startActivityForResult返回后未重新创建Android parentActivity

  24. 24

    片段重新创建后,ViewModel不会保留数据

  25. 25

    更改nix-channel后重新创建链接

  26. 26

    删除后重新创建内容提供者

  27. 27

    重新创建活动后,片段重叠

  28. 28

    重新创建片段后显示异步任务结果

  29. 29

    更新后不要重新创建存储库

热门标签

归档