Преобразование метки времени CDT в формат UTC в spark scala

#scala #dataframe #apache-spark #apache-spark-sql

#скала #фрейм данных #apache-искра #apache-spark-sql #scala #apache-spark

Вопрос:

Мой фрейм данных, myDF выглядит следующим образом —

 DATE_TIME
Wed Sep  6 15:24:27 CDT 2017
Wed Sep  6 15:30:05 CDT 2017
  

Ожидаемый результат в формате :

 2017-09-06 15:24:27
2017-09-06 15:30:05
  

Необходимо преобразовать временную метку DATE_TIME в UTC.

Попробовал приведенный ниже код в databricks notebook, но он не работает.

 %scala

val df = Seq(("Wed Sep  6 15:24:27 CDT 2017")).toDF("times")
df.withColumn("times2",date_format(to_timestamp('times,"ddd MMM dd hh:mm:ss CDT yyyy"),"yyyy-MM-dd HH:mm:ss")).show(false)

times                        | times2    
Wed Sep  6 15:24:27 CDT 2017 | null
  

Ответ №1:

Я думаю, нам нужно удалить wed из вашей строки, а затем использовать to_timestamp() функцию.

Example:

 df.show(false)
/*
 --------------------------- 
|times                      |
 --------------------------- 
|Wed Sep 6 15:24:27 CDT 2017|
 --------------------------- 
*/

df.withColumn("times2",expr("""to_timestamp(substring(times,5,length(times)),"MMM d HH:mm:ss z yyyy")""")).
show(false)
/*
 --------------------------- ------------------- 
|times                      |times2             |
 --------------------------- ------------------- 
|Wed Sep 6 15:24:27 CDT 2017|2017-09-06 15:24:27|
 --------------------------- ------------------- 
*/
  

Комментарии:

1. Большое вам спасибо. Теперь все работает нормально. Отличный брат .