首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BigQuery流和删除,而流缓冲区不是空的?

问BigQuery流和删除,而流缓冲区不是空的?
EN

Stack Overflow用户
提问于 2018-01-18 22:34:56
回答 2查看 4K关注 0票数 1

BigQuery不会直接流到他们的长期存储中,他们首先将其放入一个写优化的存储中,并定期将其刷新到主存储中。

在下面的用例中,我想更好地理解BigQuery流缓冲区。

1)如果我删除bigquery表,并立即以相同的名称重新创建一个新的bigquery表,此时某些记录仍然保存在流缓冲区中,等待被刷新到主存储中?

例如,如果我将一百万条记录流到BigQuery中。有些记录现在仍然保存在流缓冲区中,等待被刷新到BigQuery的主存储区。

此时,我删除BigQuery表并以相同的名称重新创建BigQuery表,是否仍会将流缓冲区中的剩余记录刷新到新的重新创建的表中?还是流缓冲区中的剩余记录将被删除?

我猜,流缓冲区中的剩余记录会被删除吗?我的猜测是,即使删除该表并重新创建同名的表,旧表和新表的"object id“也应该不同。

我说的对吗?

2)如果我运行delete查询,试图删除刚才流过的一些记录,该怎么办?

和上面一样,如果我流了100万条记录,其中一些仍然保存在流缓冲区中,此时,我发布了一个delete sql,它应该删除我刚刚流过的一些记录。

但是,当我发送delete sql命令时,如果我要删除的记录仍然在流缓冲区中等待被刷新到主存储中,那么我的delete sql将无法删除它们(它们还没有在BigQuery主存储中),然后这些记录将被刷新到主存储中。这意味着我的delete sql将无法删除这些记录。

我说的对吗?如果我是正确的,那么我的删除sql工作,我必须找出流缓冲区是否是空的,然后我发出删除sql?这会使事情变得更复杂。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-19 18:30:32

1)正确。"object id“是不同的,其余的记录将被删除。

2)正确的种类。DML语句不能修改仍在流缓冲区中的数据。但是,如果该语句试图触摸仍在流缓冲区中的行,则该语句将失败。

票数 3
EN

Stack Overflow用户

发布于 2020-01-31 20:43:56

我的经验。

如果您不必使用“流到BigQuery",那么就不要使用它。

现在,大多数情况下,我会将数据保存在中,然后将数据从传输到BigQuery。

例如,在旧情况下,我从MySQL获取数据,然后流到BigQuery中。现在我会

  • 将数据从MySQL移动到云存储
  • 然后将数据从云存储移动到BigQuery

这解决了我以前使用“流到BigQuery”时遇到的许多问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48331407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档