Как преобразовать строковый столбец (столбец, который содержит только время, а не дату) в time_stamp в spark-scala? - PullRequest
0 голосов
/ 23 марта 2019

Мне нужно преобразовать столбец, который содержит только время в виде строки, в тип метки времени или любую другую функцию времени, которая доступна в spark.

Ниже приведен тестовый фрейм данных, в котором в качестве строки указан «Time_eg».столбец,

Time_eg
12:49:09 AM
12:50:18 AM

Схема перед преобразованием во время,

Time_eg: строка (nullable = true)

//Converting to time stamp
val transType= test.withColumn("Time_eg", test("Time_eg").cast("timestamp"))

Схема послепри преобразовании в метку времени используется схема

Time_eg: метка времени (nullable = true)

Но вывод transType.show() дает нулевое значение для столбца «Time_eg».

Пожалуйста, дайте мне знать, как преобразовать столбец, который содержит только время в виде строки, в метку времени в Spark Scala?

Большое спасибо, если кто-нибудь может помочь в этом?

Спасибо

1 Ответ

1 голос
/ 23 марта 2019

Вам необходимо использовать специальную функцию для преобразования строки в метку времени и указать формат.Кроме того, отметка времени в Spark представляет полную дату (со временем суток).Если вы не предоставите дату, она будет установлена ​​на 1970, 1 января, начало меток времени unix.

В вашем случае вы можете преобразовать свои строки следующим образом:

Seq("12:49:09 AM", "09:00:00 PM")
    .toDF("Time_eg")
    .select(to_timestamp('Time_eg, "hh:mm:ss aa") as "ts")
    .show
+-------------------+
|                 ts|
+-------------------+
|1970-01-01 00:49:09|
|1970-01-01 21:00:00|
+-------------------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...