gpt4 book ai didi

scala - 使用 Spark 中的数据框以微秒精度解析日期

转载 作者:行者123 更新时间:2023-12-05 06:25:50 24 4
gpt4 key购买 nike

我有一个 csv 文件:

Name;Date
A;2018-01-01 10:15:25.123456
B;2018-12-31 10:15:25.123456

我尝试使用 Spark Dataframe 进行解析:

val df = spark.read.format(source="csv")
.option("header", true)
.option("delimiter", ";")
.option("inferSchema", true)
.option("timestampFormat", "yyyy-MM-dd HH:mm:ss.SSSSSS")

但是生成的 Dataframe 在毫秒处被(错误地)截断了:

scala> df.show(truncate=false)
+---+-----------------------+
|Nom|Date |
+---+-----------------------+
|A |2018-01-01 10:17:28.456|
|B |2018-12-31 10:17:28.456|
+---+-----------------------+


df.first()(1).asInstanceOf[Timestamp].getNanos()
res51: Int = 456000000

奖励问题:以纳秒精度阅读

最佳答案

.SSSSS 表示毫秒而不是微秒: java.util.Date format SSSSSS: if not microseconds what are the last 3 digits? , https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html所以如果你需要微秒,你应该通过自定义代码解析日期: Handling microseconds in Spark Scala

额外答案:SparkSQL 在内部以微秒为单位存储数据,因此您可以使用字符串来存储纳米级或单独的字段或任何其他自定义解决方案

关于scala - 使用 Spark 中的数据框以微秒精度解析日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56653450/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com