pyspark to_timestamp не включает миллисекунды - PullRequest
0 голосов
/ 04 января 2019

Я пытаюсь отформатировать свой столбец отметки времени, чтобы включить миллисекунды без успеха. Как мне отформатировать мое время, чтобы оно выглядело так - 2019-01-04 11:09:21.152?

Я посмотрел документацию и следовал за SimpleDataTimeFormat, который, по словам документации pyspark, используется функцией to_timestamp.

Это мой фрейм данных.

+--------------------------+
|updated_date              |
+--------------------------+
|2019-01-04 11:09:21.152815|
+--------------------------+

Я использую миллисекундный формат без какого-либо успеха, как показано ниже

>>> df.select('updated_date').withColumn("updated_date_col2", 
to_timestamp("updated_date", "YYYY-MM-dd HH:mm:ss:SSS")).show(1,False)
+--------------------------+-------------------+
|updated_date              |updated_date_col2  |
+--------------------------+-------------------+
|2019-01-04 11:09:21.152815|2019-01-04 11:09:21|
+--------------------------+-------------------+

Я ожидаю, что updated_date_col2 будет отформатирован как 2019-01-04 11:09:21.152

1 Ответ

0 голосов
/ 15 января 2019

Это не решение для to_timestamp, но вы можете легко сохранить ваш столбец в формате времени

Следующий код является одним из примеров преобразования числовых миллисекунд в метку времени.

from datetime import datetime

ms = datetime.now().timestamp() # ex) ms = 1547521021.83301
df = spark.createDataFrame([(1, ms)], ['obs', 'time'])
df = df.withColumn('time', df.time.cast("timestamp"))
df.show(1, False) 

+---+--------------------------+
|obs|time                      |
+---+--------------------------+
|1  |2019-01-15 12:15:49.565263|
+---+--------------------------+

если вы используете new Date().getTime() или Date.now() в JS или datetime.datetime.now().timestamp() в Python, вы можете получить числовые миллисекунды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...