gpt4 book ai didi

csv - 如何从 csv 文件中读取自定义格式的日期?

转载 作者:行者123 更新时间:2023-12-04 22:07:02 24 4
gpt4 key购买 nike

我正在解析一个数据为

的 csv 文件
03-10-2016,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").option("Date", "dd-MM-yyyy").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)

感觉是日期格式错误。将它们转换成特定格式的方法有哪些?

最佳答案

读取 CSV 文件时使用 dateFormat 选项,如下所示:

val csvs = spark.
read.
format("csv").
option("dateFormat", "dd-MM-yyyy"). // <-- should match 03-10-2016
load(...)

dateFormat 的默认值是 yyyy-MM-dd,因此出现解析错误也就不足为奇了。


引自 valueOf 的 javadoc :

Throws IllegalArgumentException - if the date given is not in the JDBC date escape format (yyyy-[m]m-[d]d)

这意味着 valueOf 的解析器的值不正确。

我在这里有两个建议:

  1. 读取数据集并显示它以查看其中的内容。

  2. 使用 dateFormat 选项定义正确的格式(默认为 yyyy-MM-dd)

Date and Time Patterns 中查找有关格式模式的更多信息(属于 java.text.SimpleDateFormat)。

关于csv - 如何从 csv 文件中读取自定义格式的日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46295879/

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