scala - spark scala 数据帧时间戳转换排序?

标签 scala apache-spark dataframe apache-spark-sql

我有一个 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 将其转换为数据帧. (所以 tString 类型, 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/

相关文章:

apache-spark - 一个 Spark 应用程序何时可以创建多个作业和阶段?

r - 合并列,同时忽略重复项和 NA

python - 有没有更快的替代方法来获取 DataFrame 的子集?

scala - 从特征自动生成 Scala 类

主构造函数中的Scala局部变量

java - SPARK SQL 不存在或不存在

java - JavaSparkContext.wholeTextFiles 的数据集 API 模拟

python - Pandas.DataFrame.rename 方法中的参数 "index"是什么?

scala - 如何模式化匹配int字符串?

scala - 过滤 Scala 的并行集合,并在找到所需数量的结果时提前中止