有没有办法在无限制的源pcollection中设置时间戳?

时间:2019-04-22 19:42:24

标签: java google-cloud-dataflow apache-beam

我想将时间戳设置为无限制的字符串

在我的解决方案中,pcollection的每一行都是一行csv

该行的一个字段中带有时间戳,其他字段如“点击次数”等。

我想基于其自身的时间戳(事件时间)而不是设置Apache Beam的默认时间戳来处理集合

此数据流的主要威胁是分组每分钟的点击次数

我有一个ftp服务,该服务将文件发送到一个文件夹,我的工作每1分钟监听一次,并在1分钟的修复窗口中处理 问题是可能会迟到数据

我执行KV选择,关键是没有秒数和点击次数的值的时间戳,并按

进行分组

我获得“每分钟的点击次数”,并将此收藏集发送到数据库

示例 数据元素包生成至12:05 pm(10个文件) 时间接收数据12:06 pm

作业生成数据 12:05 pm 120次点击

数据元素包在12:05 pm和12:06生成(12:05之后的文件)

时间12:07 pm接收数据

作业生成数据 12:05 pm 10次点击 12:06 pm 135次点击

我想根据事件数据丢弃后期数据的处理 可能以我搜索的方式

换句话说,不要将最新数据输入db-> 12:05 pm -10clicks

1 个答案:

答案 0 :(得分:0)

您可以使用WithTimestamps变换从数据中分配时间戳。例如,假设您的密钥是可以由Joda Time解析的字符串:

records.apply(
 WithTimestamps.of((KV<String, String> rec) -> Instant.parse(rec.getKey()));