如何在 PySpark 中将 unix 时间戳列转换为人类可理解的时间戳? [复制]

Posted

技术标签:

【中文标题】如何在 PySpark 中将 unix 时间戳列转换为人类可理解的时间戳? [复制]【英文标题】:How to convert a unix timestamp column in a human comprehensible timestamp in PySpark? [duplicate] 【发布时间】:2021-02-09 12:05:28 【问题描述】:

我有一列包含被 Spark 解释为 Long 类型的 unix-timestamp 数据,例如:

+---------------+
| my_timestamp  | 
+---------------+
| 1584528257638 |
| 1586618807677 |
| 1585923477767 |
| 1583314882085 |

我想将它转换成人类可读的格式,例如有类似的东西

+------------------------+
|      my_timestamp      | 
+------------------------+
|2020-03-18 10:44:17.638 |
|2020-04-11 16:26:47.677 |
|2020-04-03 15:17:57.767 |
|2020-03-04 09:41:22.085 |

我该怎么做?

【问题讨论】:

@AndréMachado 我只是想分享我使用简单类型转换(见答案)转换 unix 时间戳的方法,因为它对我非常有用,但我认为它不是很有用 伙计们,我不明白...我要求转换为时间戳,而您报告为潜在重复的问题是关于转换为日期(除了一个在 Scala 中...)在标记为重复之前进行一些讨论不是更好吗? 【参考方案1】:

由于时间戳列以毫秒为单位,只需将其转换为秒并将其转换为 TimestampType 就可以了:

from pyspark.sql.types import TimestampType
import pyspark.sql.functions as F

df.select( 
      (F.col("my_timestamp") / 1000).cast(TimestampType())
)

【讨论】:

以上是关于如何在 PySpark 中将 unix 时间戳列转换为人类可理解的时间戳? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何根据 jsonb 列中的 unix 整数设置 postgres 时间戳列?

Pyspark 将字符串转换为日期时间戳列,包含两种不同的格式

如何在 hive 中将时间戳转换为 gmt 格式

如何在 Pyspark 中将字符串更改为时间戳?

如何在pyspark中将字符串列转换为ArrayType

如何在 Pyspark 中将秒数从 Epoch 时间转换为 UTC 时间?