【发布时间】:2023-03-12 04:48:01
【问题描述】:
我正在尝试在 Spark 中使用 java.time.format 中的 DateTimeFormatter,但它似乎不可序列化。这是相关的代码块:
val pattern = "<some pattern>".r
val dtFormatter = DateTimeFormatter.ofPattern("<some non-ISO pattern>")
val logs = sc.wholeTextFiles(path)
val entries = logs.flatMap(fileContent => {
val file = fileContent._1
val content = fileContent._2
content.split("\\r?\\n").map(line => line match {
case pattern(dt, ev, seq) => Some(LogEntry(LocalDateTime.parse(dt, dtFormatter), ev, seq.toInt))
case _ => logger.error(s"Cannot parse $file: $line"); None
})
})
如何避免java.io.NotSerializableException: java.time.format.DateTimeFormatter 异常?是否有更好的库来解析时间戳?我读到 Joda 也不是可序列化的,并且已合并到 Java 8 的时间库中。
【问题讨论】:
标签: java scala serialization apache-spark