【问题标题】:bigquery : data versioning and incremental updatesbigquery:数据版本控制和增量更新
【发布时间】:2016-07-09 21:00:28
【问题描述】:

是否有关于如何处理仅 APPEND 数据库(例如 BigQuery)以进行实时分析(例如,每天更新 1 亿到 10 亿个移动用户配置文件)以及将停机时间缩短到几秒钟的任何文档。

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

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

(2) 如何将停机时间缩短到几秒钟 我喜欢Eliminating duplicate records in a BigQuery Table 中提到的解决方案,我认为它部分解决了我的挑战。

如果 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)'

bq cp --append_table mydataset.update mydataset.mytable

【问题讨论】:

    标签: real-time google-bigquery


    【解决方案1】:

    你的问题的第一部分实际上是这样的:

    Is there any other approach for updating a row in Big Query apart from overwriting the table?

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-18
      • 2018-04-22
      • 2010-09-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多