【问题标题】:Google BigQuery streaming - time to insertGoogle BigQuery 流式传输 - 插入时间
【发布时间】:2018-05-13 02:38:08
【问题描述】:

我第一次使用 Google BigQuery 处理客户项目,并使用 SSIS 插件 (CData) 在 SSIS 中创建了包以将数据插入表(一种奇怪的组合,但我的客户需要)。

我希望在 BigQuery 表中插入大约 100k 行,但是,当我希望对该表执行进一步的更新查询时,由于数据仍在缓冲区中,因此无法执行这些查询。怎么知道 BigQuery 需要多长时间?有没有办法加快这一过程?

【问题讨论】:

    标签: json ssis google-bigquery


    【解决方案1】:

    数据是否仍在缓冲区中并不重要。如果您查询该表,缓冲区中的数据也将包括在内。这只是 BigQuery 的众多精彩之一。

    https://cloud.google.com/blog/big-data/2017/06/life-of-a-bigquery-streaming-insert

    到达流缓冲区的记录将保留在那里 一些最短时间(分钟)。在此期间,虽然 记录被缓冲,您可能会发出一个查询 参考表格。 Instant Availability Reader 允许工作人员 从查询引擎读取缓冲记录之前 已提交到托管存储。

    【讨论】:

    • 嗨,格雷厄姆,您确实可以从表中查询和选择数据,但是在缓冲区中时您无法更新它(据我所知)。我正在尝试解决追溯更改供应商数据的问题。因此我需要从表中删除行并插入新更正的数字
    • 我认为这不是真的。我有在进行流式插入后立即查询表的经验,有时我无法检索这些数据。另外,您报告的链接是it's possible for the streaming readers to be unable to service query requests that want to read records from the streaming buffer. In these cases you may observe that the buffered data does not contribute to the query's results.
    【解决方案2】:

    数据仍在缓冲区中。怎么知道在 BigQuery 中这需要多长时间?

    流式数据在第一次流式插入表后的几秒钟内即可用于实时分析。 数据最多可能需要 90 分钟才能用于复制和导出操作。在documentation 中查看更多信息

    同时,have in mind - 最近通过 BigQuery Streaming (tabledata.insertall) 写入的表无法使用 UPDATE 或 DELETE 语句进行修改。所以,如上所述 - up to 90 minutes

    有没有办法加快这个过程?

    在您的情况下,唯一的方法是使用加载数据而不是流数据。根据我对您的情况的理解 - 数据在 MS SQL 中,因此您可以让您的 SSIS 包批量感知并通过Cloud Storage 批量加载它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 2018-09-06
      • 2021-06-28
      • 2014-10-26
      • 2017-05-10
      • 1970-01-01
      相关资源
      最近更新 更多