bigquery:数据版本控制和增量更新

Jos*_*a G 5 real-time google-bigquery

是否有任何文档介绍如何处理仅附加数据库(例如 BigQuery)以进行实时分析(例如每天更新的 1 亿到 10 亿移动用户配置文件),并将停机时间降至几秒钟。

(1)有一篇文章http://hortonworks.com/blog/four-step-strategy-incremental-updates-hive/关于如何实现增量更新,我想知道BigQuery中是否存在类似的解决方案。

如果我需要附加版本列(例如版本1、2、3)等,有没有快速的方法来计算版本?

(2) 如何将停机时间最小化到几秒钟我喜欢消除 BigQuery 表中的重复记录中提到的解决方案 ,我认为它部分解决了我的挑战。

如果 mydataset.mytable 有 1 亿到 10 亿条唯一的移动用户记录,并且少于几秒的停机时间是不能容忍的,是否有办法消除停机时间?例如虚拟视图?在“bq query --replace”和“bq query cp”期间,表mydataset.mytable是否可以访问,或者该表是否会被锁定,直到替换和查询完成。谢谢。

bq query --allow_large_results --replace --destination_table=mydataset.mytable \
'SELECT * FROM mydataset.mytable
 WHERE key NOT IN (SELECT key FROM mydataset.update)'
Run Code Online (Sandbox Code Playgroud)

bq cp --append_table mydataset.update mydataset.mytable

Sea*_*hen 3

你的问题的第一部分实际上听起来像这样:

除了覆盖表之外,还有其他方法可以更新 Big Query 中的行吗?

这是我们推荐的用于删除重复项的新“最佳实践”(与上面链接的做法相反),并且可以轻松调整以允许更新(基于时间,而不是版本)。您可以调整分区表达式以根据适合您的任何标准进行选择。

在回答你的第二个问题时,在“bq query --replace”期间,表不会在任何时候被锁定。在“替换”查询完成之前启动的其他查询将处理启动时表的快照。在“替换”查询作业完成后启动的查询将看到新数据。