scala - 如何使用 Scala 在 Spark 中转换为时间戳,例如 2019-03-25T00:27:46.985-0500 到 2019-03-25 00:27:46
问题描述
我想将看起来像 2019-03-25T00:27:46.985-0500 的时间戳转换为这种格式 2019-03-25 00:27:46
使用 Spark v2.3.0 Scala v2.11.8
时间 ColA ColB ColC 2019-03-25T00:27:46.985-0500 ABC 2019-03-25T00:27:46.960-0500 ABC 2019-03-25T00:27:46.839-0500 ABC 2019-03-25T00:27:46.596- 0500 ABC 2019-03-25T00:27:46.559-0500 ABC 2019-03-25T00:27:46.535-0500 ABC 2019-03-25T00:27:46.453-0500 ABC 2019-03-25T00:27:46.405-5 2019-03-25T00:27:46.393-0500 ABC
val log = spark.read.format("csv")
.option("inferSchema", "true")
.option("header", "true")
.option("sep", ",")
.option("quote", "\"")
.option("multiLine", "true")
.load("time.csv")
scala> log.printSchema
root
|-- time: string (nullable = true)
|-- ColA: string (nullable = true)
|-- ColB: string (nullable = true)
|-- ColC: string (nullable = true)
val logs = log.withColumn("Id", monotonicallyIncreasingId()+1)
val df = spark.sql("select Id, time, ColA from logs")
输入:2019-03-25T00:27:46.985-05:00 预期输出:2019-03-25 00:27:46
解决方案
您可以将 .selectExpr 与 date_format 函数一起使用
val log2 = log.selectExpr(
"date_format(time, 'yyyy-MM-dd HH:mm:ss')"
)
推荐阅读
- python - 装饰器@after_this_request 不起作用
- kubernetes - 被 kubefirewall 阻止的 VM 上的 Kubernetes Wireguard flannel 覆盖网络
- node.js - Nodejs代理请求合并
- python - 将单独的 Pandas 数据框绘制为具有共享 x 轴的条形图
- haskell - Bool -> Maybe () 是同构的吗?
- php - 如何配置 apache 虚拟主机来支持这些变量?
- java - 使用数组中所有可能的组合理解递归
- ruby-on-rails - 如何对数组和表执行内连接
- html - 使用角度7中的复选框检索所有性别值
- python - 随机森林算法不适用于新数据集