Spark rdd обрабатывать ошибку даты Java - PullRequest
0 голосов
/ 27 октября 2018

Я был смущен этой ошибкой в ​​течение нескольких дней.Я чувствовал, что это может быть некоторые проблемы с датой Java.

Вот код:

val rdd1 = some_rdd1.map { x =>
  (x._1, x._2)
}

val rdd2 = some_rdd2.map { x =>
  (x._1, x._2)
}

val formatter2 = new SimpleDateFormat("yyyyMMddmmss")

val res_rdd = rdd1.join(rdd2).map { case(id, (tm, value)) =>
  val format_time = {
    //tm is a unix timestamp, long type
    val cur_time = new Date(tm*1000L)
    val time_format = formatter2.format(cur_time)
      time_format
  }
  val format_time2 = {
    //tm is a unix timestamp, long type
    val cur_time = new Date(tm*1000L)
    val time_format = formatter2.format(cur_time)
      time_format
  }

  if (format_time!= format_time2) {
        println(s"""format_time: ${format_time}, format_time2: ${format_time2}, click_time: ${tm}""")
      }

  (tm, format_time, format_time2, value)
}
//...
//some actions

Я думал, format_time и format_time2 должны быть одинаковыми, так что печать вещи не должныпоявляются.Тем не менее, я получил следующий вывод от исполнителей:

format_time: 201810251433, format_time2: 201810251241, click_time: 1540442502
format_time: 201810250757, format_time2: 201810250924, click_time: 1540430650
format_time: 201810250738, format_time2: 201810250701, click_time: 1540422067
format_time: 201810251415, format_time2: 201810250738, click_time: 1540448140
format_time: 201810250503, format_time2: 201810251400, click_time: 1540447255
format_time: 201810250831, format_time2: 201810250836, click_time: 1540427797
format_time: 201810251203, format_time2: 201810250901, click_time: 1540429284
format_time: 201810250729, format_time2: 201810250910, click_time: 1540429821

У меня около 14 миллионов данных, и около 60k format_time и format_time2 не совпадают.Понятия не имею, почему это происходит?

...