从其他 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 写入流式传输
bigquery storage API:是不是可以将 AVRO 文件直接流式传输/保存到 Google Cloud Storage?