pyspark - PySpark - Spark SQL:如何将带有 UTC 偏移量的时间戳转换为纪元/unixtime?
问题描述
如何2019-08-22T23:57:57-07:00
使用 Spark SQL 或 PySpark 将格式中的时间戳转换为 unixtime?
我知道的最相似的功能是unix_timestamp()
它不接受上述带有 UTC 偏移的时间格式。
关于如何使用 Spark SQL 或 PySpark 来解决这个问题的任何建议?
谢谢
解决方案
在这种情况下, ISO 8601 时区的 javaSimpleDateFormat
模式是.XXX
所以你需要使用yyyy-MM-dd'T'HH:mm:ssXXX
你的格式字符串。
火花SQL
spark.sql(
"""select unix_timestamp("2019-08-22T23:57:57-07:00", "yyyy-MM-dd'T'HH:mm:ssXXX")
AS epoch"""
).show(truncate=False)
#+----------+
#|epoch |
#+----------+
#|1566543477|
#+----------+
火花数据框
from pyspark.sql.functions import unix_timestamp
df = spark.createDataFrame([("2019-08-22T23:57:57-07:00",)], ["timestamp"])
df.withColumn(
"unixtime",
unix_timestamp("timestamp", "yyyy-MM-dd'T'HH:mm:ssXXX")
).show(truncate=False)
#+-------------------------+----------+
#|timestamp |unixtime |
#+-------------------------+----------+
#|2019-08-22T23:57:57-07:00|1566543477|
#+-------------------------+----------+
请注意,pyspark 只是 spark 的一个包装器——通常我发现 scala/java 文档比 python 文档更完整。将来可能会有所帮助。
推荐阅读
- python - 需要在 Spark 中优化对休息服务的调用
- javascript - 如何使用钩子在 Redux 中切换 React 组件?
- pyspark - 无法运行程序“python”:错误=2,通过 gitlab ci/cd 管道运行 pyspark 测试时没有这样的文件或目录
- deployment - 如何在没有 Nginx 的情况下以通用模式部署 Nuxt?
- spring-security-rest - 如何在使用 Spring Security 的 Spring Boot 应用程序中跳过对 HAL 浏览器的授权
- php - 在特定日期更改 sql 表中的数据值?
- c - 在 C 中将单词转换为长字
- c++ - C 宏的标准合规性
- windows - SAPI 语音可以与 Microsoft Speech API 一起使用吗?
- spring - 是否可以将 thymeleaf 配置为从数据库呈现 html?