场景

spark-sql跑一个较大的任务,数据落盘时报错:

com.esotericsoftware.kryo.KryoException: Buffer underflow.

Caused by: org.apache.spark.SparkException: Kryo serialization failed: Buffer overflow. Available: 0, required: 53139320. To avoid this, increase spark.kryoserializer.buffer.max value.
    at org.apache.spark.serializer.KryoSerializerInstance.serialize(KryoSerializer.scala:350)
    at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:429)
    ... 3 more45

探索

查看抛出这个报错的源码:https://github.com/apache/spark/blob/ebdf41dd698ce138d07f63b1fa3ffbcc392e7fff/core/src/main/scala/org/apache/spark/serializer/KryoSerializer.scala

  override def readObject[T: ClassTag](): T = {try {kryo.readClassAndObject(input).asInstanceOf[T]} catch {// DeserializationStream uses the EOF exception to indicate stopping condition.case e: KryoExceptionif e.getMessage.toLowerCase(Locale.ROOT).contains("buffer underflow") =>throw new EOFException}}

是在将输入流转换成一个样例类时引发的报错,看注释应该是缺失终止符导致的异常。

当我把这个任务切分成两部分跑之后,就不会出现这个报错,猜测可能是因为数据量过大的缘故。spark的worker上的每个excutor的每个core,都有一个kryo的buffer 缓冲区,这个缓冲区默认初始大小是64KB,根据任务需要会提高buffer大小,默认最大可以提高到64m。

根据提示尝试提高最大buffer大小的参数:

--conf spark.kryoserializer.buffer.max=512m

再观察几天看问题会不会复现。

需要注意的是,官方提示spark.kryoserializer.buffer.max参数设定的值必须小于2048M.

spark:报错com.esotericsoftware.kryo.KryoException: Buffer underflow.相关推荐

  1. com.esotericsoftware.kryo.KryoException: Buffer underflow. 解决

    用kryo进行序列化和反序列化的时候,序列化的过程很顺利,反序列化的过程中遇到报错KryoException: Buffer underflow. 代码如下: //其中path是将序列化对象保存的路径 ...

  2. 【Dubbo】序列化异常—— com.esotericsoftware.kryo.KryoException: Buffer underflow

    Dubbo服务通常依赖一个jar包来表示服务签名,其中包含了服务的接口定义. 服务的提供者(服务端)需实现这些接口: 服务的调用者(客户端)可以通过这些接口调用服务. 问题 此文提到的异常 " ...

  3. Spark 中 JVM 内存使用及配置详情、spark报错与调优、Spark内存溢出OOM异常

    一般在我们开发spark程序的时候,从代码开发到上线以及后期的维护中,在整个过程中都需要涉及到调优的问题,即一开始需要考虑如何把代码写的更简洁高效调优(即代码优化),待开发测试完成后,提交任务时综合考 ...

  4. spark报错:invalid token

    启动spark报错,启动container失败,去看yarn的日志,显示invalid token, 经过排查是hadoop子节点的配置和主节点的配置不一致导致的,同步之后,问题解决. 转载于:htt ...

  5. Spark报错:Error:scalac: Scala compiler JARs not found (module ‘Spark_two‘): C:\Users\沫小新\.m2\repo

    Spark报错: 找不到scala-compiler-2.11.8.jar的包 Error:scalac: Scala compiler JARs not found (module 'Spark_t ...

  6. Spark报错It appears that you are attempting to broadcast an RDD or reference an RDD from an action

    Spark报错: Exception: It appears that you are attempting to broadcast an RDD or reference an RDD from ...

  7. kerberos 下运行spark 报错 Requested user hdfs is banned

    启动运行报错 main : run as user is hdfs main : requested yarn user is hdfs Requested user hdfs is bannedFa ...

  8. Spark 报错 DROP TABLE IF EXISTS should not show AnalysisException

    spark-sql 执行执行 drop table if exists xxxx 的时候,报错信息如下: DROP TABLE IF EXISTS should not show AnalysisEx ...

  9. Spark报错 Failed to send RPC xxx to/ip:43074 java.nio.channels.ClosedChannelException

    1.美图 2.背景 是这样的,我写了一个spark程序,然后,运行的时候,我kiill yarn掉这个程序,然后发现程序报个错然后继续运行了. 我在页面点击任务停止就没事,我页面点击是调用yarn a ...

最新文章

  1. 强势分享5款超级实用的办公软件,建议收藏!
  2. ul li前面的点怎么变大_亚马逊产品被投诉需要UL认证,该如何办理?
  3. git遇到的问题-- Another git process seems to be running in this repository
  4. linux与windows双系统保持时间同步
  5. 高精度加法(简明版C语言),高精度加法(简明版C语言)
  6. AngularJs学习笔记--html compiler
  7. 国内达梦数据库相关函数-时间日期
  8. wpf之blend之自定义最小化按钮
  9. 不同语言Sql Server的库交换出现乱码
  10. Nginx限制访问次数和并发数
  11. 日久见人心,以小见大
  12. 数据结构 实验2——表达式求值
  13. wps,Excel图表如何添加参考线
  14. java 人民币转换,java人民币大小写转换方法
  15. QT QMessageBox 按钮文字更改为中文
  16. 1024X600RGB屏幕规格书分析
  17. python按某列拆分excel表格_利用Python+Pandas实现从一个excel表中提取列形成新表
  18. python空间点赞_用Python登录好友QQ空间点赞
  19. Python实现PPT转化为Word和OCR识别
  20. Microcontent - 微内容

热门文章

  1. 漫画 | “道德沦丧”的程序员 !
  2. c语言入门题目:输出两行短句
  3. mac解决mysql忘记密码的问题(亲测有效)
  4. DB2 9和ASP.NET2.0构建下一代应用程序之一
  5. 差分时钟、DQS与DQM - DDRx的关键技术介绍
  6. 单链表的逆置算法解析
  7. mgo EnsureIndex注意事项
  8. matlab plot函数画线,线型和颜色
  9. 前端效果之“拉开窗帘”
  10. vm装linux不能上网 系统,VM 安装Linux后,以前的系统无法上网