【问题标题】:Use case for dataflow (small SQL queries)数据流用例(小型 SQL 查询)
【发布时间】:2020-10-09 11:31:39
【问题描述】:

我们正在使用 Cloud Function 来转换 BigQuery 中的数据: - 所有数据都在 BigQuery 中 - 为了转换数据,我们只在 BigQuery 中使用 SQL 查询 - 每个查询每天运行一次 - 我们最大的 SQL 查询运行大约 2 到 3 分钟,但大多数查询运行时间不到 30 秒 - 我们每天执行大约 50 个查询,而且这个数字还在增加

我们最初尝试使用 Dataflow 做同样的事情(BigQuery 中的 SQL 查询),但是: - 启动数据流大约需要 10 到 15 分钟 - 编码比我们的云功能更复杂 - 那个时候,Dataflow SQL 还没有实现

每次我们与使用 GCP 的人(用户、培训师或审核员)交谈时,他们都会推荐使用 Dataflow。 那么,在我们的用例中,我们是否错过了 Dataflow 的“魔力”?有没有办法让它在几秒钟内而不是几分钟内开始?

另外,如果我们在 Dataflow 中使用流式传输,如何计算成本?我知道我们分批为我们使用的东西付费,但是如果我们使用流媒体呢?算不算全职运行服务?

感谢您的帮助

【问题讨论】:

    标签: google-cloud-platform google-bigquery google-cloud-functions google-cloud-dataflow


    【解决方案1】:

    对于第一部分,BigQuery VS Dataflow,我在几周前与 Google 讨论过这个问题,他们的建议很明确:

    • 如果您可以在 SQL 中表达您的转换,并且您可以使用 BigQuery (external table) 访问您的数据,那么使用 BigQuery 总是更快、更便宜。即使请求很复杂。
    • 对于所有其他用例,最推荐使用 Dataflow。
      • 实时(真正需要实时,动态计算指标with windowing)
      • 当您需要访问外部 API(ML、外部服务...)时
      • 当您需要使用 BigQuery 以外的其他内容(Firestore、BigTable、Cloud SQL 等)或从 BigQuery 无法访问的源中读取数据时。

    是的,数据流在 3 分钟后开始,在 3 分钟后再次停止。很长……你要为这段无用的时间付出代价。

    对于批处理,例如流式传输,您只需为用于管道的 Compute Engine 的数量(和大小)付费。数据流在您提供的边界内自动扩展。流式传输管道不会扩展到 0。如果您的 PubSub 中没有消息,那么您仍然至少有 1 个虚拟机可用并且您需要付费。

    【讨论】:

    • 谢谢,它完美地回答了我的问题!
    猜你喜欢
    • 2020-01-30
    • 1970-01-01
    • 2011-09-22
    • 2021-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-14
    相关资源
    最近更新 更多