我有一个 csv 格式:
t,value
2012-01-12 12:30:00,4
2012-01-12 12:45:00,3
2012-01-12 12:00:00,12
2012-01-12 12:15:00,13
2012-01-12 13:00:00,7
我使用 spark-csv 将其转换为数据帧. (所以 t
是 String
类型, value
是 Integer 类型)。什么是适当的 spark scala 方式,以便输出按时间排序?
我正在考虑将 t
转换为可以允许数据帧 sortBy
的特定类型。但我不熟悉哪种时间戳类型允许按时间排序数据帧。
最佳答案
给定格式,您可以将时间戳转换为
import org.apache.spark.sql.types.TimestampType
df.select($"t".cast(TimestampType)) // or df.select($"t".cast("timestamp"))
获取正确的日期时间或使用 unix_timestamp
(Spark 1.5+,在 Spark < 1.5 中您可以使用同名的 Hive UDF)函数:
import org.apache.spark.sql.functions.unix_timestamp
df.select(unix_timestamp($"t"))
获取数字表示(Unix 时间戳,单位为 秒)。
附带说明,您没有理由不能直接 orderBy($"t")
。字典顺序在这里应该可以正常工作。
关于scala - spark scala 数据帧时间戳转换排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34408183/