加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 如何为Option类型构造函数创建编码器,例如选项[INT]?

发布时间:2020-12-16 09:03:23 所属栏目:安全 来源:网络整理
导读:是否可以在与Dataset API一起使用的案例类中使用Option [_]成员?例如.选项[INT] 我试图找到一个例子,但还没找到.这可以通过自定义编码器(映射?)来完成,但我还没有找到一个例子. 这可能是使用Frameless库实现的:https://github.com/adelbertc/frameless但
是否可以在与Dataset API一起使用的案例类中使用Option [_]成员?例如.选项[INT]

我试图找到一个例子,但还没找到.这可以通过自定义编码器(映射?)来完成,但我还没有找到一个例子.

这可能是使用Frameless库实现的:https://github.com/adelbertc/frameless但是应该有一个简单的方法来完成基础Spark库的完成.

更新

我正在使用:“org.apache.spark”%%“spark-core”%“1.6.1”

尝试使用Option [Int]时出现以下错误:

Unable to find encoder for type stored in a Dataset. Primitive types
(Int,String,etc) and Product types (case classes) are supported by
importing sqlContext.implicits._ Support for serializing other types
will be added in future releases

解决方案更新

由于我是原型设计,我只是在转换为数据集之前在函数内部声明了case类(在我的情况下,在对象Main {中).

当我将案例类移到Main函数之外时,选项类型工作得很好.

解决方法

我们只为我们支持 in SQLImplicits的类型子集定义了implicits.我们应该考虑为普通T添加Option [T],因为内部基础架构确实理解Option.您可以通过使用Tuple或 constructing the required implicit yourself创建案例类来解决此问题(尽管这是使用和内部API,因此可能在将来的版本中中断).

implicit def optionalInt: org.apache.spark.sql.Encoder[Option[Int]] = org.apache.spark.sql.catalyst.encoders.ExpressionEncoder()

val ds = Seq(Some(1),None).toDS()

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读