【问题标题】:Convert a stream into mini batch for loading into bigquery将流转换为小批量以加载到 bigquery
【发布时间】:2019-07-04 15:55:41
【问题描述】:

我想构建以下管道:

pub/sub --> dataflow --> bigquery

数据正在流式传输,但我想避免将数据直接流式传输到 BigQuery,因此我希望在数据流机器中批量处理小块,然后当它们达到一定大小时将它们作为加载作业写入 BQ /时间。

我找不到任何关于如何使用 python apache beam SDK 执行此操作的示例 - 只有 Java。

【问题讨论】:

  • 为什么要避免将其流式传输到 BigQuery 中?!
  • 嘿@GrahamPolley,因为流式插入是有成本的,而加载作业是免费的:)
  • 是的,但除非您大规模运行,否则通常可以忽略不计。在 PubSub 之外创建某种微批处理将需要更多的开发时间,并且它将有更多的移动组件,即更多的故障点和需要调试的区域。是不是真的值得吗?如果你是微批处理,你需要事先写出到 GCS,然后再支付存储费用。

标签: google-cloud-platform google-bigquery google-cloud-dataflow apache-beam


【解决方案1】:

这项工作正在进行中。 FILE_LOADS method 仅适用于批处理管道(带有use_beam_bq_sink 实验标志,它将是future 中的默认标志。

但是,对于流式传输管道,如 code 中所示,它将引发 NotImplementedError 并带有消息:

仅批处理管道支持将文件加载到 BigQuery。

有一个开放的JIRA ticket,您可以在其中关注进度。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-15
    • 1970-01-01
    • 2018-11-09
    • 1970-01-01
    • 1970-01-01
    • 2022-11-07
    • 1970-01-01
    相关资源
    最近更新 更多