PySpark: преобразование строки в метку времени - PullRequest
0 голосов
/ 07 марта 2019

Я работаю с данными времени и пытаюсь преобразовать строку в формат отметки времени.

Вот как выглядит столбец «Время»

+----------+
|  Time    |
+----------+
|1358380800|
|1380672000|
+----------+

Вот что я хочу

+---------------+
|  Time         |
+---------------+
|2013/1/17 8:0:0|
|2013/10/2 8:0:0|
+---------------+

Я нашел несколько похожих вопросов и ответов и попробовал этот код, но все заканчиваются на 'null'

df2 = df.withColumn("Time", test["Time"].cast(TimestampType()))

df2 = df.withColumn('Time', F.unix_timestamp('Time', 'yyyy-MM-dd').cast(TimestampType()))

1 Ответ

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

Ну, вы делаете это наоборот. Функция sql unix_timestamp преобразует строку с заданным форматом в метку времени unix. Если вы хотите преобразовать метку времени Unix в формат даты и времени, вы должны использовать функцию from_unixtime sql:

from pyspark.sql import functions as F
from pyspark.sql import types as T
l1 = [('1358380800',),('1380672000',)]
df = spark.createDataFrame(l1,['Time'])
df.withColumn('Time', F.from_unixtime(df.Time).cast(T.TimestampType())).show()

Выход:

+-------------------+ 
|               Time|
+-------------------+
|2013-01-17 01:00:00|
|2013-10-02 02:00:00|
+-------------------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...