Приведение к отметке времени делает значение пустым - PullRequest
0 голосов
/ 13 декабря 2018

При преобразовании типа данных столбца из строки в метку времени значение становится нулевым.

У меня есть значения в следующем формате

20070811T00789.167861+0100

Я хочу привести тип к метке времени, когда я делаю следующее

df.withColumn('arrivetime', df['arrivetime'].cast('timestamp'))

значениестановится null.Как привести столбец к метке времени, не затрагивая значение и его формат?

1 Ответ

0 голосов
/ 13 декабря 2018

Я не знаю точно, в каком формате вы собираетесь использовать 5 цифр для времени и 6 (нано секунд?) В конце, но знаете, что временные метки в Spark - это миллисекунды, а не наносекунды, так что вы собираетесьпотерять информацию.

При этом вы можете использовать метод Spark unix_timestamp для преобразования строк в метки времени с использованием синтаксиса SimpleDateFormat.

Сначала вам, вероятно, придетсяизбавиться от последних 3 цифр метки времени, используя Spark's regexp_replace

В Scala, который будет выглядеть так:

regexp_replace(df("arrivetime"), """(\.\d{3})\d*""", """$1""")

Тогда вы можете использоватьunix_timestamp вроде так:

unix_timestamp([replaced string], "yyyyMMdd'T'HHmmss.SSSz")

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