scala - 如何在 spark-scala 中将字符串列(仅包含 time 而不包含 date 的列)转换为 time_stamp?
问题描述
我需要将仅包含时间作为字符串的列转换为时间戳类型或火花中可用的任何其他时间函数。
下面是具有“Time_eg”作为字符串列的测试数据框,
Time_eg
12:49:09 AM
12:50:18 AM
Schema 在它转换为时间之前,
Time_eg:字符串(可为空=真)
//Converting to time stamp
val transType= test.withColumn("Time_eg", test("Time_eg").cast("timestamp"))
Schema 转换为时间戳后,Schema 为
Time_eg:时间戳(可为空=真)
但是“Time_eg”列的输出transType.show()
为空值。
请让我知道如何将仅包含时间作为字符串的列转换为 spark scala 中的时间戳?
如果有人可以提供帮助,将不胜感激?
谢谢
解决方案
您需要使用特定的函数将字符串转换为时间戳,并指定格式。此外,Spark 中的时间戳表示完整的日期(带有一天中的时间)。如果您不提供日期,它将设置为 1970 年 1 月 1 日,即 unix 时间戳的开始。
在您的情况下,您可以按如下方式转换字符串:
Seq("12:49:09 AM", "09:00:00 PM")
.toDF("Time_eg")
.select(to_timestamp('Time_eg, "hh:mm:ss aa") as "ts")
.show
+-------------------+
| ts|
+-------------------+
|1970-01-01 00:49:09|
|1970-01-01 21:00:00|
+-------------------+
推荐阅读
- parameter-passing - 将参数传递给 DAX 查询报表生成器
- json - 键值更改时使用jackson将Json转换为Java对象
- python - 防止 ORM 关系中的重复子条目
- c++ - 获取 C++ 中归一化函数结果的 nan 错误
- node.js - AWS @aws-sdk/lib-dynamodb '无法读取未定义的属性'0''
- python - 不使用 BuildKit 时 Docker 'Permission denied'
- java - 如何使用 WindowEvent 终止这个示例 Swing 应用程序?
- python - 我有这些词典。我应该使用什么命令来打印第二个中的“d”键?有个窍门
- reactjs - 如何在 React js 上删除满足特定条件的列表元素
- testing - 是否可以在 testcafe-browser-provider-saucelabs 中添加 iPad 参数“deviceOrientation”?