【发布时间】:2017-09-20 05:55:02
【问题描述】:
我正在解析一个 csv 文件,其数据为:
2016-10-03, 18.00.00, 2, 6
当我读取文件创建架构如下:
StructType schema = DataTypes.createStructType(Arrays.asList(
DataTypes.createStructField("Date", DataTypes.DateType, false),
DataTypes.createStructField("Time", DataTypes.TimestampType, false),
DataTypes.createStructField("CO(GT)", DataTypes.IntegerType, false),
DataTypes.createStructField("PT08.S1(CO)", DataTypes.IntegerType, false)))
Dataset<Row> df = spark.read().format("csv").schema(schema).load("src/main/resources/AirQualityUCI/sample.csv");
它产生以下错误:
Exception in task 0.0 in stage 0.0 (TID 0)
java.lang.IllegalArgumentException
at java.sql.Date.valueOf(Unknown Source)
at org.apache.spark.sql.catalyst.util.DateTimeUtils$.stringToTime(DateTimeUtils.scala:137)
感觉是时间格式错误。有哪些方法可以将它们转换为特定格式或更改为StructType 的正确含义?
我期望的格式是 hh:mm:ss,因为它有助于通过 spark sql 通过连接列将其转换为时间戳格式。
2016-10-03, 18:00:00, 2, 6
【问题讨论】:
标签: java csv apache-spark apache-spark-sql