从参考:
使用默认时区和默认语言环境,将具有给定模式(默认情况下为'yyyy-MM-dd HH:mm:ss')的时间字符串转换为Unix时间戳(以秒为单位),如果失败,则返回null。
我发现这使DataFrame时间戳列减少了毫秒。我只是想知道是将其截断还是将时间戳四舍五入到最接近的秒数。
没有文档备份,但是在@spark 2.2.0中,它被截断了,下面是一个演示:
from pyspark.sql import Row
import pyspark.sql.functions as F
r = Row('datetime')
lst = [r('2017-10-29 10:20:30.102'), r('2017-10-29 10:20:30.999')]
df = spark.createDataFrame(lst)
(df.withColumn('trunc_datetime', F.unix_timestamp(F.col('datetime')))
.withColumn('seconds', F.from_unixtime(F.col('trunc_datetime'), 'ss'))
.show(2, False))
+-----------------------+--------------+-------+
|datetime |trunc_datetime|seconds|
+-----------------------+--------------+-------+
|2017-10-29 10:20:30.102|1509286830 |30 |
|2017-10-29 10:20:30.999|1509286830 |30 |
+-----------------------+--------------+-------+
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
911 次 |
| 最近记录: |