从其他 Google Cloud 服务流式传输数据时,是不是可以修复失败的 BigQuery 插入?

Posted

技术标签:

【中文标题】从其他 Google Cloud 服务流式传输数据时,是不是可以修复失败的 BigQuery 插入?【英文标题】:Is it possible to fix failed inserts to BigQuery when streaming data from other Google Cloud services?从其他 Google Cloud 服务流式传输数据时,是否可以修复失败的 BigQuery 插入? 【发布时间】:2018-06-11 19:23:48 【问题描述】:

BigQuery 提供 insertIds 并执行一些重复数据删除,以帮助解决通过 API 插入数据时出现的故障情况。根据文档BigQuery will remember an insert for up to a minute,因此如果插入失败,可以通过 API 重试插入,而不必担心可能的(插入的)数据重复。这可以是tricky to get right。

问题在于,在 Google Cloud 上,有大量服务承诺将数据插入 BigQuery。例如,DataFlow / Apache Beam 是推荐堆栈的一部分,用于将来自多个来源的数据导入 BigQuery。还有 Dataprep、Stackdriver Logging 等。

那么,当使用任意 3rd 方 BigQuery 客户端(即不是 BigQuery API)时,是否有一种一致的方法可以在 BigQuery 中恢复失败的插入?

【问题讨论】:

【参考方案1】:

没有。

不同的 BigQuery 客户端以不同的方式使用 BigQuery API。这意味着提供将数据导出(或流式传输)到 BigQuery 的各种 Google Cloud 服务(例如 Dataprep、Dataflow)具有不同的策略来处理失败的 BigQuery 插入。

如果您在插入失败的情况下需要一致的 BigQuery 重复数据删除方法,则需要实现自己的 BigQuery API 客户端应用程序。

【讨论】:

以上是关于从其他 Google Cloud 服务流式传输数据时,是不是可以修复失败的 BigQuery 插入?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Appengine和来自API的Python脚本流数据将数据流式传输到Google Cloud BigQuery?

使用 Python 向 Google Cloud Storage 写入流式传输

将数据流式传输到 BQ - 服务帐户所需的理想最低权限

bigquery storage API:是不是可以将 AVRO 文件直接流式传输/保存到 Google Cloud Storage?

Google BigQuery - 将数据流式传输到 BigQuery

使用Tornado将二进制文件流式传输到Google Storage