unable to find encoder for type stored in a dataset的解决方法
前言
一般来说,在我们将数据读到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的解决方法相关推荐
- 解决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 ...
- No qualifying bean of type xxx‘ available 的一种解决方法
No qualifying bean of type xxx' available 的一种解决方法 参考文章: (1)No qualifying bean of type xxx' available ...
- linux qemu 报错 Unable to reserve 0xfffff000 bytes of virtual address space at 0x1000 解决方法
目录 错误现象 可能原因 解决过程 解决方法 错误现象 使用 qemu-i686 运行 i686平台文件 报错 qemu-i686: Unable to reserve 0xfffff000 byte ...
- configure: error: cannot guess build type; you must specify one解决方法
configure: error: cannot guess build type; you must specify one解决方法 参考文章: (1)configure: error: canno ...
- 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 ...
- Error: #260-D: explicit type is missing (int assumed)的解决方法
今天编译一个STM32程序的时候,遇到了一个问题,编译通不过. 输出的错误信息是: ..\SYSTEM\usart\usart.c(41): error: #260-D: explicit type ...
- 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的时候指 ...
- spark报错 Unable to find encoder for type 你的样例类名
spark样例类 为什么报错没有spark的Encoder // _ooOoo_ // o8888888o // 88" . "88 // (| -_- |) // O\ = /O ...
- java webservice wsimport 无法将名称 'soapenc:Array' 解析为 'type definition' 组件 时对应的解决方法...
(一):代码如下: package com.enso.uploaddata;import org.apache.axis.client.Call; import org.apache.axis.cli ...
最新文章
- 老板要我开发一个简单的工作流引擎
- python线下培训-Python培训是应该选择线上还是线下呢?
- Photoshop绘制植物大战僵尸中的食人花
- 用于主题检测的临时日志(d94169f9-f1c0-45a2-82d4-6edc4bd35539 - 3bfe001a-32de-4114-a6b4-4005b770f6d7)...
- MySql命令行基本操作
- 发布-订阅消息常用通信方式
- IOC操作Bean管理XML方式(bean 的生命周期)
- 表情符号mysql utf8mb4_mysql utf8mb4与emoji表情
- java char 8192_java.net.ProtocolException:预期229个字节,但收到8192
- kotlin 调用java_从Kotlin调用Java代码
- 【CIKM2020】如何更为合适地评测推荐算法? Top-N物品推荐算法评测设置回顾
- [tips]ubuntu 12.04系统黑屏
- paip.为什么使用多线程的原因.
- Windows 安装两个MYSQL实例
- table 转义字符 html,HTML转义字符表
- web前端入门教程(非常详细)
- android之exoplayer
- Java一步到位!彻底了解JDK、JRE、JVM分别是什么及它们之间的联系
- 一个“编码十几年”的『老程序员』分享的四点心得
- 某私募基金投资公司面经+字节基础架构面经——11.18日