来自reference:
使用默认时区和默认语言环境,将给定模式的时间字符串(默认为'yyyy-MM-dd HH:mm:ss')转换为Unix时间戳(以秒为单位),如果失败则返回null。 / p>
我发现这会使DataFrame时间戳列的毫秒数减少。我只是想知道它是否只是截断,或将时间戳舍入到最接近的秒。
答案 0 :(得分:4)
没有文档备份,但在@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 |
+-----------------------+--------------+-------+