Обработка потока Scala, считая события каждой даты - PullRequest
0 голосов
/ 09 января 2019

Я работаю с обработкой Scala Stream, у меня есть список событий, и я пытаюсь подсчитать вхождения каждой даты в этом формате (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
.
.
.

проблема, с которой я столкнулся сейчас, заключается в том, что timestamp имеет date format, но мне нужно string.

как я могу изменить это только на дату в строковом формате?

исправлено:

Вот как вы можете решить эту проблему:

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

но проблема в том, что теперь он ничего не возвращает !!

1 Ответ

0 голосов
/ 09 января 2019

Я не знаю, моргать, но я догадываюсь

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), это вызовет исключение.

...