gpt4 book ai didi

java - 如何在Spark +2.4中读取CSV时设置时间戳格式

转载 作者:行者123 更新时间:2023-12-02 05:49:16 25 4
gpt4 key购买 nike

我在 Azure 上有一个 Databricks 5.3 集群,它运行 Apache Spark 2.4.0 和 Scala 2.11。

我正在尝试使用自定义时间戳格式解析 CSV 文件,但我不知道 Spark 使用哪种日期时间模式格式。

我的 CSV 如下所示:

Timestamp, Name, Value
02/07/2019 14:51:32.869-08:00, BatteryA, 0.25
02/07/2019 14:55:45.343-08:00, BatteryB, 0.50
02/07/2019 14:58:25.845-08:00, BatteryC, 0.34

我正在执行以下命令来阅读它:

%scala

val csvDataFrame = sqlContext.read.format("csv")
.option("header", "true")
.option("treatEmptyValuesAsNulls", "true")
.option("inferSchema", "true")
.option("mode","DROPMALFORMED")
.option("timestampFormat", "MM/dd/yyyy HH:mm:ss.SSSZZ")
.load("path/to/file.csv")

csvDataFrame.printSchema()

但无论我使用什么时间戳模式,第一列始终被推断为字符串。

csvDataFrame:org.apache.spark.sql.DataFrame
Timestamp:string
Name:string
Value:double

我不是 Java/Scala 开发人员,而且是 Spark/Databricks 的新手。我在任何地方都找不到 Spark 使用哪个日期时间格式化程序来解析值。

我尝试过的模式:

MM/dd/yyyy HH:mm:ss.SSSZZ
MM/dd/yyyy HH:mm:ss.SSSXXX

最佳答案

事实证明,Databricks 文档在读取/写入 CSV 文件时提到了 dateFormat 选项,但它没有执行任何操作。正确的选项与 Spark 使用的选项相同,称为 timestampFormat

我的问题是由文件中的格式错误的行引起的。即使使用 DROPMALFORMED,该行也会导致时间戳被解释为字符串。

关于java - 如何在Spark +2.4中读取CSV时设置时间戳格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56065407/

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