scala – 为什么在创建自定义案例类的数据集时“无法找到存储在
发布时间:2020-12-16 09:32:54 所属栏目:安全 来源:网络整理
导读:Spark 2.0(最终)与Scala 2.11.8。以下超级简单代码产生编译错误错误:(17,45)无法找到存储在数据集中的类型的编码器。通过导入spark.implicits._支持原始类型(Int,String等)和产品类型(案例类)。将来的版本中将添加对其他类型的序列化的支持。 import org.
Spark 2.0(最终)与Scala 2.11.8。以下超级简单代码产生编译错误错误:(17,45)无法找到存储在数据集中的类型的编码器。通过导入spark.implicits._支持原始类型(Int,String等)和产品类型(案例类)。将来的版本中将添加对其他类型的序列化的支持。
import org.apache.spark.sql.SparkSession case class SimpleTuple(id: Int,desc: String) object DatasetTest { val dataList = List( SimpleTuple(5,"abc"),SimpleTuple(6,"bcd") ) def main(args: Array[String]): Unit = { val sparkSession = SparkSession.builder. master("local") .appName("example") .getOrCreate() val dataset = sparkSession.createDataset(dataList) } } 解决方法
Spark数据集要求编码器将要存储的数据类型。对于常见类型(原子,产品类型),有许多预定义的编码器可用,但您必须先从
SparkSession.implicits 导入,以使其工作:
val sparkSession: SparkSession = ??? import sparkSession.implicits._ val dataset = sparkSession.createDataset(dataList) 进一步阅读: >对于未由内置编码器覆盖的自定义对象,请参见How to store custom objects in a Dataset (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |