Pyspark разобрать пользовательский формат даты - PullRequest
0 голосов
/ 19 марта 2019

Я сталкиваюсь с этой проблемой: у меня сложный формат даты, представленный в виде строки.Поэтому я использую функцию unix_timestamp для ее анализа.

Однако я не могу найти подходящий шаблон для использования.Я не знаю правильных сокращений для часового пояса, дня недели и месяца, и я не нашел ни одной ссылки, чтобы уточнить их.

from pyspark.sql.functions import unix_timestamp

d =  spark.createDataFrame([(1,"Mon Jan 14 11:43:20 EET 2019"),\
                          (2,"Wed Jun 27 16:26:46 EEST 2018")],\
                          ["id","time_str"]) 

pattern = "aaa bbb dd HH:mm:ss ZZZ yyyy" 
d= d.withColumn("timestampCol", unix_timestamp(d["time_str"], pattern).cast("timestamp"))

d.show()
>>>
+---+------------------------------+------------+
|id |time_str                      |timestampCol|
+---+------------------------------+------------+
|1  |Mon Jan 14 11:43:20 EET 2019  |null        |
|2  |Wed Jun 27 16:26:46 EEST 2018 |null        |
+---+------------------------------+------------+

Знает ли Somenone, как правильно преобразовать эту строку в метки времени?

1 Ответ

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

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

from pyspark.sql.functions import *
d =  spark.createDataFrame([(1,"Mon Jan 14 11:43:20 EET 2019"),\
                      (2,"Wed Jun 27 16:26:46 EEST 2018")],\
                      ["id","time_str"]) 

pattern = "EEE MMM dd HH:mm:ss z yyyy"
d.withColumn("timestamp", unix_timestamp(col("time_str"), pattern).cast("timestamp")).show(truncate=False)

Он выдаст вывод ниже.Для дальнейшей документации вы можете обратиться к https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html, который я использовал для поиска EEE и MMM, что необходимо, поскольку у вас есть 3 символа в день недели и месяц соответственно.

+---+-----------------------------+-------------------+
|id |time_str                     |timestamp          |
+---+-----------------------------+-------------------+
|1  |Mon Jan 14 11:43:20 EET 2019 |2019-01-14 09:43:20|
|2  |Wed Jun 27 16:26:46 EEST 2018|2018-06-27 13:26:46|
+---+-----------------------------+-------------------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...