scala流处理,计算每个日期的出现次数

时间:2019-01-09 18:03:39

标签: scala apache-flink stream-processing

我正在使用scala流处理,并且我有一个事件列表,并且我试图以这种格式(dd-mm-yyyy)计算每个日期的出现次数

这是我对案例类的定义:

case class Event(prId: Int, author: String, event: String, timestamp: Date)

我的解决方法如下

def CountOccur(events: DataStreaming[Event]): DataStreaming[(String, Int)] = {
    events.map(c => (c.timestamp, 1)).keyBy(x => x._1).timeWindow(Time.seconds(5)).sum(1)
  }

这是想返回这样的答案:

2010-09-25,10
2010-09-27,7
.
.
.

我现在遇到的问题是timestampdate format,但我需要string

如何将其更改为仅字符串格式的日期?

已修复:

这是解决此问题的方法:

events.map(c => (sdf.format(c.timestamp), 1)).keyBy(x => sdf.format(x._1)).window(EventTimeSessionWindows.withGap(Time.seconds(10))

但是问题是现在它什么也不会返回!

1 个答案:

答案 0 :(得分:-1)

我不知道flink,但我正在猜测

def CountOccur(events: DataStreaming[Event]): DataStreaming[(String, Int)] = {
    val sdf = new SimpleDateFormat("dd-mm-yyyy")

    events.map(c => (sdf.format(c.timestamp), 1)).keyBy(x => x._1).timeWindow(Time.seconds(5)).sum(1)
}

您需要删除第二种格式sdf.format(x._1),它将引发异常。