我正在研究分析流数据(网络事件)。
是否有一个很好的经验法则可以帮助我确定是否应该
或
查看文档和本文中的示例 https://cloud.google.com/dataflow/blog/dataflow-beam-and-spark-comparison
经典批处理编程,每小时团队分数,所有时间用户分数,用户行为分析感觉它们可以直接通过SQL创建(记录时给定"created"
和"write"
个时间戳)
垃圾邮件过滤示例我可以看到使用BQ的限制(如果这是基于每个事件的流媒体)。
Dataflow的语义似乎在GroupBy,Join,Combine,Windowing以及BQ支持的流媒体插入方面具有重叠性,在几秒钟内就可用,对于小时级聚合来说足够短。
有什么根本我还没理解?或者是否存在流入BigQuery然后查询将开始变得不可靠的情况?
谢谢
克里斯
(如果这个问题有点含糊,请道歉 - 很高兴被重定向到更好的地方询问)
答案 0 :(得分:3)
是否选择在Dataflow中执行分组和聚合或使用BigQuery操作(在使用Dataflow获取数据之后)取决于应用程序逻辑以及消耗输出的内容。例如,会话和滑动窗口都难以在SQL中表达;而Dataflow支持任意处理,例如触发估计。另一件需要考虑的事情是,使用命令式编程语言而不是使用SQL来表达计算逻辑可能更容易。
答案 1 :(得分:1)
下面,不一定回答你的确切问题,而是添加另一个方面来考虑:
1.如果您正在构建应该为您的基础架构供电的流程 - 数据流可能是一个不错的选择。当然,你必须使用你的技术团队资源
2.如果您计划由非技术人员进行ad-hocs和自助式活动(当然也不包括技术人员) - 您可以专注于使用BigQuery的查询功能(包括窗口功能)并制作确保你有一个很好的实际工作示例,公司的其他部分可以用作模板来开始利用BigQuery和GCP的强大功能。事实证明这很有效!领域专家现在可以自己回答他们的问题(就像你在你的问题中所招募的那样),而不是在他们之间有技术人员。在这种情况下,质量和时间要好得多!