Spark DataSet 日期时间解析
Spark DataSet date time parsing
我应该如何使用 spark 2.0 数据集正确执行日期时间解析 API?
有很多数据框/RDD 样本,例如
- Better way to convert a string field into timestamp in Spark
一个class喜欢
case class MyClass(myField:java.sql.Datetime)
val mynewDf = spark.read
.option("header", "true")
.option("inferSchema", "true")
.option("charset", "UTF-8")
.option("delimiter", ",")
.csv("pathToFile.csv")
.as[MyClass]
类型转换不够。
我应该如何使用数据集 API?
正确执行此操作
编辑
加载数据有效。例如。 print schema
显示 myDateFiled: timestamp (nullable = true)
但是 myDf.show 结果是
java.lang.IllegalArgumentException
at java.sql.Date.valueOf(Date.java:143)
这让我相信我对日期的解析不正确。怎么会这样?
时间戳的正确表示是 java.sql.Timestamp
所以 class 应该定义为
case class MyClass(myField: java.sql.Timestamp)
对应数据:
myField
"2016-01-01 00:00:03"
如果满足此条件,您只需提供架构:
spark.read
.options(Map("header" -> "true"))
.schema(StructType(Seq(StructField("myField", TimestampType, false))))
.csv(...)
.as[MyClass]
可以使用 dateFormat
和 SimpleDateFormat
string 提供替代日期格式。
模式定义可以替换为 .as[MyClass]
之前的类型转换:
spark.read
.options(Map("header" -> "true"))
.csv(...)
.withColumn("myField", $"myField".cast("timestamp"))
.as[MyClass]
对于 DateType
使用 java.sql.Date
。
我应该如何使用 spark 2.0 数据集正确执行日期时间解析 API?
有很多数据框/RDD 样本,例如
- Better way to convert a string field into timestamp in Spark
一个class喜欢
case class MyClass(myField:java.sql.Datetime)
val mynewDf = spark.read
.option("header", "true")
.option("inferSchema", "true")
.option("charset", "UTF-8")
.option("delimiter", ",")
.csv("pathToFile.csv")
.as[MyClass]
类型转换不够。 我应该如何使用数据集 API?
正确执行此操作编辑
加载数据有效。例如。 print schema
显示 myDateFiled: timestamp (nullable = true)
但是 myDf.show 结果是
java.lang.IllegalArgumentException
at java.sql.Date.valueOf(Date.java:143)
这让我相信我对日期的解析不正确。怎么会这样?
时间戳的正确表示是 java.sql.Timestamp
所以 class 应该定义为
case class MyClass(myField: java.sql.Timestamp)
对应数据:
myField
"2016-01-01 00:00:03"
如果满足此条件,您只需提供架构:
spark.read
.options(Map("header" -> "true"))
.schema(StructType(Seq(StructField("myField", TimestampType, false))))
.csv(...)
.as[MyClass]
可以使用 dateFormat
和 SimpleDateFormat
string 提供替代日期格式。
模式定义可以替换为 .as[MyClass]
之前的类型转换:
spark.read
.options(Map("header" -> "true"))
.csv(...)
.withColumn("myField", $"myField".cast("timestamp"))
.as[MyClass]
对于 DateType
使用 java.sql.Date
。