SparkSql 隐式转换异常

Posted 虎啸千峰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SparkSql 隐式转换异常相关的知识,希望对你有一定的参考价值。

 一、Sparksql隐式转换时异常描述

Cannot create encoder for Option of Product type, because Product type is represented as a row, and the entire row can not be null in Spark SQL like normal databases.
You can wrap your type with Tuple1 if you do want top level null Product objects, e.g. instead of creating `Dataset[Option[MyClass]]`,
you can do something like `val ds: Dataset[Tuple1[MyClass]] = Seq(Tuple1(MyClass(...)), Tuple1(null)).toDS`

二、原因和解决方法

此问题主要是由于将data[Row]转换成对应的的dataSet类型时,找不到对应的类型转换导致的,需要为对应的类型添加隐式转换,一般添加代码:

implicit val registerKryoEncoder = Encoders.kryo[MyClass]

以上是关于SparkSql 隐式转换异常的主要内容,如果未能解决你的问题,请参考以下文章

Scala异常 隐式转换 泛型

sparksql

SparkSQL程序设计

SQL执行异常系列之——隐式转换

Spark SQL - 转换为数据集列的 UUID 引发解析异常

深入浅出JavaScript中的隐式转换