首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从case类获取StructType时,应该为java.time.Instant指定什么类型?

从case类获取StructType时,应该为java.time.Instant指定什么类型?
EN

Stack Overflow用户
提问于 2018-09-07 16:40:07
回答 1查看 349关注 0票数 0

我有个案例课

代码语言:javascript
复制
case class A(tm: java.time.Instant)

尝试使用以下命令获取此case类的StructType时

代码语言:javascript
复制
ScalaReflection.schemaFor[A].dataType.asInstanceOf[StructType]

我得到下面的错误

代码语言:javascript
复制
[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

有人能告诉我怎么解决这个问题吗?我已经搜索了很多,但没有找到任何东西来解决这个问题。而且,我不能更改case类中的java.time.Instant类型。

EN

回答 1

Stack Overflow用户

发布于 2018-09-10 03:34:10

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

但是,您可以将数据集作为DataFrame加载,并将java.time.Instant字段map为受支持的类型(即,Encoder可用于该类型)。

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

和no,我不能更改

类中的java.time.Instant类型。

那么,你必须创建你自己的case类来在Spark中使用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52218663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档