gpt4 book ai didi

scala - 在 Spark 中为 DataFrame 模式定义 DateType 转换

转载 作者:行者123 更新时间:2023-12-04 11:32:13 24 4
gpt4 key购买 nike

我正在从 CSV 文件中读取 DataFrame,其中第一列是事件日期和时间,例如

2016-08-08 07:45:28+03



在下面的代码中,是否可以在模式定义中指定如何将此类字符串转换为日期?
val df:DataFrame = spark.read.options(Map(
"header" -> "true"
)).schema(StructType(
StructField("EventTime", DataTypes.DateType, false) ::
Nil
)).csv("C:/qos1h.csv")

此代码失败
java.lang.NumberFormatException: For input string: "28+03"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.parseInt(Integer.java:615)
at java.sql.Timestamp.valueOf(Timestamp.java:259)
at org.apache.spark.sql.catalyst.util.DateTimeUtils$.stringToTime(DateTimeUtils.scala:135)
at org.apache.spark.sql.execution.datasources.csv.CSVTypeCast$.castTo(CSVInferSchema.scala:291)
at org.apache.spark.sql.execution.datasources.csv.CSVRelation$$anonfun$csvParser$3.apply(CSVRelation.scala:115)
at org.apache.spark.sql.execution.datasources.csv.CSVRelation$$anonfun$csvParser$3.apply(CSVRelation.scala:84)
at org.apache.spark.sql.execution.datasources.csv.CSVFileFormat$$anonfun$buildReader$1$$anonfun$apply$1.apply(CSVFileFormat.scala:125)
at org.apache.spark.sql.execution.datasources.csv.CSVFileFormat$$anonfun$buildReader$1$$anonfun$apply$1.apply(CSVFileFormat.scala:124)

最佳答案

看起来不可能在模式定义中指定字符串到日期的转换。但是在 DataFrameReader.csv 方法中 documentation有关于如何通过每个 DateType 字段的选项指定日期格式字符串的信息。

这是固定代码:

val df:DataFrame = spark.read.options(Map(
"header" -> "true",
"dateFormat" -> "yyyy-MM-dd HH:mm:ssX"
)).schema(StructType(
StructField("EventTime", DataTypes.DateType, false) ::
Nil
)).csv("C:/qos1h.csv")

关于scala - 在 Spark 中为 DataFrame 模式定义 DateType 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38900005/

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