【问题标题】:Windowing functions in Dataflow and Big QueryDataflow 和 Big Query 中的窗口化函数
【发布时间】:2016-02-04 18:46:58
【问题描述】:

我正在研究分析流数据(网络事件)。

是否有一个好的经验法则可以帮助我确定是否应该这样做

  1. 在 Dataflow 中执行分组和聚合并写入输出

  1. 使用 Dataflow 流式传输到 Big Query,并可能使用范围装饰器来限制数据/对分区使用窗口函数并通过 SQL 聚合。

查看文档和本文中的示例 https://cloud.google.com/dataflow/blog/dataflow-beam-and-spark-comparison

经典的批处理编程、每小时团队得分、历史用户得分、用户行为分析感觉就像通过 SQL 直接创建(给定 "created""write" 时间戳被记录)

垃圾邮件过滤示例我可以看到使用 BQ 的限制,如果它应用在每个事件流的基础上)。

Dataflow 的语义在 GroupBy、Join、Combine、Windowing 以及支持流式插入的 BQ 方面似乎有重叠,可在几秒钟内获得可用性,对于小时级聚合来说足够短。

有什么基本的我不明白吗?或者是否存在流入 BigQuery 然后查询将开始变得不可靠的情况?

谢谢

克里斯

(抱歉,如果这个问题有点含糊 - 很高兴被重定向到更好的地方提问)

【问题讨论】:

    标签: google-bigquery google-cloud-dataflow


    【解决方案1】:

    是选择在 Dataflow 中执行分组和聚合还是使用 BigQuery 操作(在使用 Dataflow 提取数据之后)取决于应用逻辑和消耗输出的内容。例如,会话和滑动窗口都很难用 SQL 来表达;而 Dataflow 支持任意处理,例如触发估计。要考虑的另一件事是,使用命令式编程语言而不是使用 SQL 来表达计算逻辑可能更容易。

    【讨论】:

    • 谢谢 - 我有一个强烈的印象,即差异将随着经验而来,我们才刚刚开始迁移到流式架构。我要补充一点,根据我的经验,会话和滑动窗口很容易在 SQL 中使用带有{ROWS | RANGE} 或范围子句的窗口函数来表达,这就是我的一些困惑的根源。我们已经以这种方式实施了拆分测试和可变加权归因。
    【解决方案2】:

    下面,不一定回答您的确切问题,而是增加了另一个需要考虑的方面:
    1. 如果您正在构建应该为您的基础架构提供动力的流程 - 数据流可能是一个不错的选择。当然,您必须使用您的技术团队资源。
    2. 如果您计划非技术人员的临时和自助类型的活动(当然这里也不排除技术人员) - 您可以专注于使用 BigQuery 的查询功能(包括窗口功能)并制作确保您有很好的实际工作示例,您公司的其他人可以将其用作模板,开始利用 BigQuery 和 GCP 的强大功能。事实证明这很有效!领域专家现在可以自己回答他们的问题(就像您在问题中列出的那样),而无需技术人员介入。在这种情况下质量和时间要好得多!

    【讨论】:

      猜你喜欢
      • 2016-02-01
      • 2016-04-12
      • 2016-04-03
      • 2023-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-29
      • 1970-01-01
      相关资源
      最近更新 更多