Как напечатать текущее время внутри foreachRDD в apache spark? - PullRequest
0 голосов
/ 23 апреля 2020

У меня интервал между партиями 5 секунд.
Я хочу посмотреть, сколько rdd сформировано в одной партии. Поэтому я добавил время внутри forEach для печати времени в секундах и подсчета rdd через 5 секунд.

  textStream.foreachRDD(rdd =>{
  println("======="+ TimeUnit.MILLISECONDS.toMinutes(Instant.now.toEpochMilli))
  rdd.foreach(println(_))
})

Это дает то же самое время (текущий пустой ввод):

=======26461220
=======26461220
=======26461220
=======26461220

время должно измениться правильно? Q1. Как распечатать текущее время?
Q2. Сколько rdd формируется в потоке?

1 Ответ

1 голос
/ 23 апреля 2020

Q1. Как распечатать текущее время?

Вы можете просто использовать System.nanoTime()

textStream.foreachRDD(rdd => {
  rdd.foreach(println(System.nanoTime())
})

Q2. Сколько rdd сформировано в потоке?

Вы получите один RDD за каждый интервал между партиями. Интервал между партиями устанавливается в вашей конфигурации SparkSession. Поток называется DStream, который представляет собой последовательность отдельных СДР.

...