谷歌云数据流 - 我可以得到"事件时间"来自元数据?

时间:2016-06-29 09:22:54

标签: google-cloud-dataflow

问候开发者,

我知道数据流(DF)可以从I / O(如Pubsub)获取事件时间,我也可以分配"事件时间"数据。但是,我可以从数据中获取此属性值吗?

根据我的理解,我可以从数据中获取输入时间戳(处理时间),但不是事件时间。

Q1:我可以从数据中获取事件时间吗?

Q2:如果可以的话,如何获得它?

感谢您的帮助:D

1 个答案:

答案 0 :(得分:1)

要获取DoFn中元素的时间戳,可以调用ProcessContext.timestamp()。要根据您自己的应用程序逻辑设置元素的时间戳,可以使用Context.outputWithTimestamp()

像这样:

@Override
public void processElement(ProcessContext c) {
  // Generate a timestamp that falls somewhere in two hours after the event time.
  long randMillis = (long) (Math.random() * Duration.standardHours(2).getMillis());
  Instant randomTimestamp = c.timestamp().plus(randMillis);
  c.outputWithTimestamp(c.element(), new Instant(randomTimestamp));
}