从案例类中获取StructType时,给java.time.Instant提供什么类型?

时间:2018-09-07 08:40:07

标签: scala apache-spark spark-structured-streaming

我有一个案例课

case class A(tm: java.time.Instant)

尝试使用

获取此案例类的StructType时
ScalaReflection.schemaFor[A].dataType.asInstanceOf[StructType]

我遇到以下错误

[error] Exception in thread "main" java.lang.ExceptionInInitializerError
[error]     at sample.spark.streaming.StructuredStreaming.main(StructuredStreaming.scala)
[error] Caused by: java.lang.UnsupportedOperationException: Schema for type java.time.Instant is not supported

有人可以告诉我如何解决吗?我进行了很多搜索,但找不到任何解决方法。不,我不能在案例类中更改类型java.time.Instant

1 个答案:

答案 0 :(得分:1)

tl; dr 您不能简单地将java.time.*类用作架构的一部分(在结构化查询/数据集中)。

不过,您可以将数据集作为DataFramemap java.time.Instant字段加载到受支持的类型(例如,Encoder可用)。

有关可用编码器的列表,请参见org.apache.spark.sql.SQLImplicits


  

不,我不能在case类中更改类型java.time.Instant。

好吧,那么您必须创建自己的case类以在Spark中使用。