Вы можете определить функцию udf
для форматирования секунд в ЧЧ: ММ: сс как
import org.apache.spark.sql.functions._
def timeOfDay = udf((seconds: Long) => {
val df = new java.text.SimpleDateFormat("HH:mm:ss")
df.setTimeZone(java.util.TimeZone.getTimeZone("GMT"))
df.format(seconds*1000)
})
, а затем вызвать функцию udf
как
df.withColumn("time", timeOfDay(col("time")))
.show(false)
, который должен дать вам
+--------+------+------+-----+-----+--------+------+
|time |nodeID|posX |posY |speed|date |period|
+--------+------+------+-----+-----+--------+------+
|08:07:00|148 |5316.2|500.0|59.04|7/5/2010|556 |
+--------+------+------+-----+-----+--------+------+
Вы можете сделать то же самое с Java8 LocalTime , как
import java.time.LocalTime
import org.apache.spark.sql.functions._
def timeOfDay = udf((seconds: Long) => LocalTime.ofSecondOfDay(seconds).toString)
, однако, не будет включать0 раз .