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

在零

我在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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章