【发布时间】:2023-03-27 12:20:01
【问题描述】:
示例代码:
val sparkSession = SparkUtil.getSparkSession("timestamp_format_test")
import sparkSession.implicits._
val format = "yyyy/MM/dd HH:mm:ss.SSS"
val time = "2018/12/21 08:07:36.927"
val df = sparkSession.sparkContext.parallelize(Seq(time)).toDF("in_timestamp")
val df2 = df.withColumn("out_timestamp", to_timestamp(df.col("in_timestamp"), format))
输出:
df2.show(false)
请注意:out_timestamp 会丢失原始值的毫秒部分
+-----------------------+-------------------+
|in_timestamp |out_timestamp |
+-----------------------+-------------------+
|2018/12/21 08:07:36.927|2018-12-21 08:07:36|
+-----------------------+-------------------+
df2.printSchema()
root
|-- in_timestamp: string (nullable = true)
|-- out_timestamp: timestamp (nullable = true)
在上面的结果中:in_timestamp 是字符串类型,我想转换为时间戳数据类型,它确实转换但毫秒部分丢失了。任何的想法。?谢谢!
【问题讨论】:
-
奇怪的是这还没有解决。 OP 的代码有效,如果他使用不采用格式说明符的 to_timestamp 函数。因为这也是 spark 中使用的默认格式。
-
@Nayan,那些没有帮助,与我的场景不匹配,请提出一些解决方案。!
标签: scala apache-spark apache-spark-sql