我在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文档dateFormat
在读取/写入CSV文件时提到了一个选项,但它没有任何作用。正确的选项与Spark使用的相同,称为timestampFormat
。
我的问题是由文件中格式错误的行引起的。即使使用DROPMALFORMED,该行也会导致将时间戳解释为字符串。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句