前言

一般来说,在我们将数据读到DataFrame之后,会继续使用其他一些算子进行处理,如map,flatMap等,但是如果你直接对其调用这些算子时,可能会出现类似unable to find encoder for type stored in a dataset的错误,这种错误的产生一般是因为该DataFrame中的某些返回值的类型不能通过spark自身的的反射完成自动编码,如Map类型,它不属于基本类型,String,case Class和元组类型,因此会报错。

解决方法

spark数据集需要编码器(encoder)来处理即将存储的数据类型。 对于常见类型(atomics, product types),有许多预定义的编码器可用,但我们必须首先从SparkSession.implicits导入它们才能使其工作,如

import org.apache.spark.sql.SparkSessioncase class SimpleTuple(id: Int, desc: String)val dataList = List(SimpleTuple(5, "abc"),SimpleTuple(6, "bcd"))val spark: SparkSession = SparkSession.builder().appName("test").config("spark.sql.warehouse.dir", "/tmp").enableHiveSupport().getOrCreate()
import spark.implicits._
val dataList = ???
val dataset = sparkSession.createDataset(dataList)

sparkSession为我们创建的sparkSession的示例。

或者,我们也可以直接提供明确的编码器:

import org.apache.spark.sql.{Encoder, Encoders}val dataset = spark.createDataset(dataList)(Encoders.product[SimpleTuple])

encoder是存储类型的编码器。

注意,Enocders还提供了许多用于原子类型的预定义编码器,以及用于复杂编码器的编码器,可以使用ExpressionEncoder进行派生。

unable to find encoder for type stored in a dataset的解决方法相关推荐

  1. 解决Unable to find encoder for type stored in a Dataset问题

    问题描述 Error:(350, 43) Unable to find encoder for type stored in a Dataset. Primitive types (Int, Stri ...

  2. No qualifying bean of type xxx‘ available 的一种解决方法

    No qualifying bean of type xxx' available 的一种解决方法 参考文章: (1)No qualifying bean of type xxx' available ...

  3. linux qemu 报错 Unable to reserve 0xfffff000 bytes of virtual address space at 0x1000 解决方法

    目录 错误现象 可能原因 解决过程 解决方法 错误现象 使用 qemu-i686 运行 i686平台文件 报错 qemu-i686: Unable to reserve 0xfffff000 byte ...

  4. configure: error: cannot guess build type; you must specify one解决方法

    configure: error: cannot guess build type; you must specify one解决方法 参考文章: (1)configure: error: canno ...

  5. ERROR: Unable to access 'C:\Users\鏉庨摥\.emulator_console_auth_token': emulator consol...解决方法

    一,Android studio运行模拟器出现如下错误:Emulator: ERROR: Unable to access 'C:\Users\鏉庨摥.emulator_console_auth_to ...

  6. Error: #260-D: explicit type is missing (int assumed)的解决方法

    今天编译一个STM32程序的时候,遇到了一个问题,编译通不过. 输出的错误信息是: ..\SYSTEM\usart\usart.c(41): error:  #260-D: explicit type ...

  7. unable to find java_Unable to find a javac compiler原因和解决方法

    Unable to find a javac compiler;Perhaps JAVA_HOME does not point to the JDK异常产生原因和解决方法. 安装tomcat的时候指 ...

  8. spark报错 Unable to find encoder for type 你的样例类名

    spark样例类 为什么报错没有spark的Encoder // _ooOoo_ // o8888888o // 88" . "88 // (| -_- |) // O\ = /O ...

  9. java webservice wsimport 无法将名称 'soapenc:Array' 解析为 'type definition' 组件 时对应的解决方法...

    (一):代码如下: package com.enso.uploaddata;import org.apache.axis.client.Call; import org.apache.axis.cli ...

最新文章

  1. 老板要我开发一个简单的工作流引擎
  2. python线下培训-Python培训是应该选择线上还是线下呢?
  3. Photoshop绘制植物大战僵尸中的食人花
  4. 用于主题检测的临时日志(d94169f9-f1c0-45a2-82d4-6edc4bd35539 - 3bfe001a-32de-4114-a6b4-4005b770f6d7)...
  5. MySql命令行基本操作
  6. 发布-订阅消息常用通信方式
  7. IOC操作Bean管理XML方式(bean 的生命周期)
  8. 表情符号mysql utf8mb4_mysql utf8mb4与emoji表情
  9. java char 8192_java.net.ProtocolException:预期229个字节,但收到8192
  10. kotlin 调用java_从Kotlin调用Java代码
  11. 【CIKM2020】如何更为合适地评测推荐算法? Top-N物品推荐算法评测设置回顾
  12. [tips]ubuntu 12.04系统黑屏
  13. paip.为什么使用多线程的原因.
  14. Windows 安装两个MYSQL实例
  15. table 转义字符 html,HTML转义字符表
  16. web前端入门教程(非常详细)
  17. android之exoplayer
  18. Java一步到位!彻底了解JDK、JRE、JVM分别是什么及它们之间的联系
  19. 一个“编码十几年”的『老程序员』分享的四点心得
  20. 某私募基金投资公司面经+字节基础架构面经——11.18日

热门文章

  1. Oracle 动态游标 PL/SQL 动态SQL语句 open for [using] 语句
  2. 富文本框TinyMCE4.8上传本地图片基本配置(前端篇)
  3. uniapp使用第三方字体
  4. 三十五 我在软件园的那些日子里
  5. 在线LaTex编辑器
  6. Latex——本地编辑器TeXstudio
  7. 口头禅多多......
  8. 电商系统购物车设计思路
  9. 蓝蓝算法第二期,T51
  10. 2022经典生活感悟说说,句句值千金