Как преобразовать столбец Timestamp в столбец Long в миллисекундах в Spark SQL - PullRequest
1 голос
/ 18 июня 2019

Какой самый короткий и самый эффективный способ в Spark SQL преобразовать столбец Timestamp в метку времени в миллисекундах Long столбец?

Вот пример преобразования метки времени в миллисекунды

scala> val ts = spark.sql("SELECT now() as ts")
ts: org.apache.spark.sql.DataFrame = [ts: timestamp]

scala> ts.show(false)
+-----------------------+                                                       
|ts                     |
+-----------------------+
|2019-06-18 12:32:02.41 |
+-----------------------+

scala> val tss = ts.selectExpr(
 |   "ts",
 |   "BIGINT(ts) as seconds_ts",
 |   "BIGINT(ts) * 1000 + BIGINT(date_format(ts, 'S')) as millis_ts"
 | )
tss: org.apache.spark.sql.DataFrame = [ts: timestamp, seconds_ts: bigint ... 1 more field]

scala> tss.show(false)
+----------------------+----------+-------------+                               
|ts                    |seconds_ts|millis_ts    |
+----------------------+----------+-------------+
|2019-06-18 12:32:02.41|1560861122|1560861122410|
+----------------------+----------+-------------+

Как видите, самый простой способ получить миллисекунды из отметки времени не работает - приведение к длинным возвращаемым секундам, однако информация в миллисекундах во временной отметке сохраняется.

Единственный способ извлечения информации в миллисекундах - использование функции date_format, которая не так проста, как я ожидал.

Кто-нибудь знает способ получить миллисекундное время UNIX из Timestamp столбца проще, чем это?

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