我正在使用一个BigQuery表数据源。它是“无界的”,因为它是通过批处理过程更新的。它包含来自服务器日志的按会话键的报告数据,其中每一行捕获一个请求。我无法访问原始日志数据,必须使用BigQuery表。
我想使用beam api开发一个基于自定义Java的模板,其目标是:
这似乎是一个相当标准的用例吗?在我迄今为止的研究中,我还没有找到一个完美的例子,也还没有能够确定某些基本要求的最佳实践方法。我非常感谢你的指点。关键词研究?文件,教程。我目前的想法是正确的,还是需要考虑其他方法?
问题:
发布于 2020-01-02 21:44:22
对于1号,您可以在应用窗口之前简单地使用withTimestamps函数,这将为您的项目分配时间戳。这里是一些python的例子。
对于编号2,文档声明:
会话窗口在按键的基础上应用,对于随时间不定期分布的数据非常有用。..。如果数据在最小指定的间隙持续时间之后到达,这将启动一个新窗口的开始。
同样在java文档中,您只能指定最小间隙持续时间,而不能指定最大间隔时间。这意味着会话窗口可以很容易地支持持续时间的会话。毕竟,它唯一能做的就是在你的数据上加一个水印,并保持它的活力。
对于 3,BigQuery IO连接器和BigQuery存储API的区别在于后者(01/2020时的一个实验特性)直接访问存储的数据,而不需要通过BigQuery (BigQuery data不存储in BigQuery)的逻辑通道。这意味着对于存储API,文献资料声明:
您不能使用它读取数据源,如联邦表和逻辑视图。
另外,这两个方法之间有不同的限制和配额,您可以在上面的文档链接中找到这些限制和配额。
https://stackoverflow.com/questions/59569081
复制相似问题