Есть разные способы получить дату и время в Spark.
Давайте использовать следующие примеры данных:
val df=Seq("2005-04-24T09:12:49Z").toDF("time_stamp")
df.createOrReplaceTempView("tmp")
Дата из отметки времени
//in spark sql api
spark.sql("select to_date(time_stamp)dt from tmp").show()
//in dataframe api
df.withColumn("dt",to_date('time_stamp)).select("dt").show()
Result:
//+----------+
//| dt|
//+----------+
//|2005-04-24|
//+----------+
получить дату и время изотметка времени - использование функций from_unixtime и unix_timestamp
//in spark sql api
spark.sql("""select timestamp(from_unixtime(unix_timestamp(time_stamp,"yyyy-MM-dd'T'hh:mm:ss'Z'"),"yyyy-MM-dd hh:mm:ss")) as ts from tmp""").show()
//in dataframe api
df.withColumn("dt",from_unixtime(unix_timestamp('time_stamp,"yyyy-MM-dd'T'hh:mm:ss'Z'"),"yyyy-MM-dd hh:mm:ss").cast("timestamp")).select("dt").show()
// Result:
// +-------------------+
// | ts|
// +-------------------+
// |2005-04-24 09:12:49|
// +-------------------+
получение даты и времени из отметки времени - использование функции unix_timestamp
//in spark sql api
spark.sql("""select timestamp(unix_timestamp(time_stamp,"yyyy-MM-dd'T'hh:mm:ss'Z'")) as ts from tmp""").show()
//in dataframe api
df.withColumn("dt",unix_timestamp('time_stamp,"yyyy-MM-dd'T'hh:mm:ss'Z'").cast("timestamp")).select("dt").show()
// Result:
// +-------------------+
// | ts|
// +-------------------+
// |2005-04-24 09:12:49|
// +-------------------+
получение даты и времени из отметки времени - использование функции to_timestamp
//in spark sql api
spark.sql("select to_timestamp(time_stamp)ts from tmp").show()
//in dataframe api
df.withColumn("dt",to_timestamp('time_stamp)).select("dt").show()
// Result:
// +-------------------+
// | ts|
// +-------------------+
// |2005-04-24 04:12:49|
// +-------------------+
получить дату и время из отметки времени - Использование функции to_timestamp с указанным форматом
//in spark sql api
spark.sql("""select to_timestamp(time_stamp,"yyyy-MM-dd'T'hh:mm:ss'Z'")ts from tmp""").show()
//in dataframe api
df.withColumn("dt",to_timestamp($"time_stamp","yyyy-MM-dd'T'hh:mm:ss'Z'")).select("dt").show()
// Result:
// +-------------------+
// | ts|
// +-------------------+
// |2005-04-24 09:12:49|
// +-------------------+