数据流和大查询中的窗口函数

时间:2016-02-04 18:46:59

标签: google-bigquery google-cloud-dataflow

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

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

  1. 在Dataflow中执行分组和聚合并编写输出
    1. 使用Dataflow流式传输到Big Query,并可能使用范围装饰器来限制数据/使用分区的窗口函数并通过SQL进行聚合。
    2. 查看文档和本文中的示例 https://cloud.google.com/dataflow/blog/dataflow-beam-and-spark-comparison

      经典批处​​理编程,每小时团队分数,所有时间用户分数,用户行为分析感觉它们可以直接通过SQL创建(记录时给定"created""write"个时间戳)

      垃圾邮件过滤示例我可以看到使用BQ的限制(如果这是基于每个事件的流媒体)。

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

      有什么根本我还没理解?或者是否存在流入BigQuery然后查询将开始变得不可靠的情况?

      谢谢

      克里斯

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

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