我是spark&pyspark的新手,刚刚开始使用spark 2.0。我正在尝试将服务器上的时间戳(posix/unix)转换为常规日期(例如yyyy-mm-dd&time),但无法这样做。我使用了以下两个命令:
df_new = df.withColumn('fromTimestamp', f.from_unixtime(df['timestamp'], 'yyyy-mm-dd HH:mm:ss'))
和
df.select("timestamp",from_unixtime(f.col("timestamp"))).show()
其中f是pyspark.sql.functions api的别名。它们都产生以下结果:
| @RequiredResult | ActualResult |
+--------------------+--------------------+
|2020-06-01 00:00:03 |52385-52-27 00:52:14|
|2020-06-01 00:00:02 |52385-35-27 00:35:19|
+--------------------+--------------------+
此外,我希望聚合时间间隔(到30分钟或60分钟)的持续时间。有什么线索知道怎么做吗?
1条答案
按热度按时间dzhpxtsq1#
unix时间戳定义为自1970年1月1日以来的秒数。但是,有些类unix系统使用自该日期起的毫秒数,产生的值高出1000倍。
例如日期
2020-06-01 00:00:03
将由时间戳表示1590962403
. 如果时间戳1590962403000
如果使用,则日期为52385年:印刷品
所以你应该划分
timestamp
应用前按1000列from_unixtime
.