自定义数据流模板-BigQuery到CloudStorage-文档?一般解决方案建议?

问题描述 投票:0回答:1

我正在使用BigQuery表数据源。它是“无限制的”,因为它通过批处理过程进行了更新。它包含来自服务器日志的会话键控报告数据,每行捕获一个请求。我无权访问原始日志数据,并且必须使用BigQuery表。

我想使用Beam api开发自定义的基于Java的google数据流模板,目标是:

  1. 整理键会话对象

  2. 派生会话级别指标

  3. 基于会话度量标准得出可过滤的窗口级度量标准,例如,上一个窗口中有错误的会话百分比,以及每个过滤后的属性的错误百分比,例如,每种设备类型的错误百分比

  4. 将结果作为格式化/压缩的报告写入云存储。

这似乎是一个相当标准的用例?到目前为止,在我的研究中,我还没有找到一个完美的例子,并且仍然无法确定某些基本要求的最佳实践方法。我非常感谢任何指示。研究关键词?文档,教程。我目前的想法正确吗,还是我需要考虑其他方法?

问题:

  1. beam windowing and BigQuery I / O Connector-我看到可以通过Beam api指定窗口类型和大小。我的BQ表每行都有一个时间戳字段。我应该以某种方式通过配置传递此消息还是应该是自动的?我是否需要通过SQL查询手动执行此操作?我不清楚。

  2. 固定时间开窗与会话开窗功能-示例是基本示例,不能解决任何极端情况。我的课程可以持续几个小时。每个窗口可能有100ks加上会话密钥。会话窗口支持吗?

  3. BigQuery与BigQueryClientStorage-区别对我来说还不清楚。我了解BQCS可以带来性能上的好处,但是我是否必须在准备步骤中存储BQ数据才能使用它?还是我可以直接通过BQCS直接查询我的表,并为我解决这个问题?

google-bigquery google-cloud-dataflow apache-beam
1个回答
0
投票

对于数字1,您可以在应用窗口之前简单地使用withTimestamps函数,这会将时间戳记分配给您的项目。 Here是一些python示例。

对于数字2 documentation状态:

会话窗口以每个键为基础,并且对于随时间不规则分布的数据很有用。 [...]如果数据在指定的最小间隔持续时间之后到达,则将启动新窗口的开始。

也在java documentation中,您只能指定最小间隔时间,但不能指定最大间隔时间。这意味着会话窗口可以轻松支持持续时间很长的会话。毕竟,它唯一要做的就是在数据上加上水印并保持其活动状态。

[我担心我还没有完全理解问题[[数字3,如果您可以提供更多的信息或有用的链接,我很乐意进行一些研究]

© www.soinside.com 2019 - 2024. All rights reserved.