Я был смущен этой ошибкой в течение нескольких дней.Я чувствовал, что это может быть некоторые проблемы с датой 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
не совпадают.Понятия не имею, почему это происходит?