Spark设置Kryo序列化缓冲区大小
背景
今天在开发SparkRDD的过程中出现Buffer Overflow错误,查看具体Yarn日志后发现是因为Kryo序列化缓冲区溢出了,日志建议调大spark.kryoserializer.buffer.max的value,搜索了一下设置keyo序列化缓冲区的方法,特此整理记录下来。
20/01/08 17:12:55 WARN scheduler.TaskSetManager: Lost task 1.0 in stage 1.0 (TID 4, s015.test.com, executor 1): org.apache.spark.SparkException: Kryo serialization failed: Buffer overflow. Available: 0, required: 10300408. To avoid this, increase spark.kryoserializer.buffer.max value.
at org.apache.spark.serializer.KryoSerializerInstance.serialize(KryoSerializer.scala:315)
at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:367)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
方法一:通过conf参数设置spark.kryoserializer.buffer.max
spark-submit在提交spark作业时可以带很多参数,其中有一个参数--conf可以设置spark.kryoserializer.buffer.max的大小,具体如下。
./bin/spark-submit \
--class <main-class> \
--master <master-url> \
--deploy-mode <deploy-mode> \
--conf spark.kryoserializer.buffer.max=512m \
... # other options
<application-jar> \
[application-arguments]
上面的--conf spark.kryoserializer.buffer.max=512m即代表把Kryo序列化缓冲区的buffer大小设置为512mb。
方法二:通过程序中拿到sparkConf对象设置spark.kryoserializer.buffer.max
1.设置Kryo为序列化类
//设置Kryo为序列化类(默认为Java序列类)
sparkConf.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer");
2.设置spark.kryoserializer.buffer.max的值
//两种设置方法
sparkConf.set("spark.kryoserializer.buffer.max", "128m");
sparkConf.set("spark.kryoserializer.buffer.max.mb", "128");
3.检查是否成功设置Kryo参数
//打印日志,检查是否成功设置
System.out.println( sparkConf.get("spark.kryoserializer.buffer.max") );
参考文献
[1]【大数据进击】如何设置spark.kryoserializer.buffer.max value
[2]Spark official docs: Submitting Applications
Spark设置Kryo序列化缓冲区大小的更多相关文章
- Spark:将RDD[List[String,List[Person]]]中的List[Person]通过spark api保存为hdfs文件时一直出现not serializable task,没办法找到"spark自定义Kryo序列化输入输出API"
声明:本文转自<在Spark中自定义Kryo序列化输入输出API> 在Spark中内置支持两种系列化格式:(1).Java serialization:(2).Kryo seriali ...
- SetConsoleScreenBufferSize 函数--设置控制台屏幕缓冲区大小
SetConsoleScreenBufferSize函数 来源:https://msdn.microsoft.com/en-us/library/windows/desktop/ms686044(v= ...
- 【Spark调优】Kryo序列化
[Java序列化与反序列化] Java序列化是指把Java对象转换为字节序列的过程:而Java反序列化是指把字节序列恢复为Java对象的过程.序列化使用场景:1.数据的持久化,通过序列化可以把数据永久 ...
- socket tcp缓冲区大小的默认值、最大值
Author:阿冬哥 Created:2013-4-17 Blog:http://blog.csdn.net/c359719435/ Copyright 2013 阿冬哥 http://blog.cs ...
- 【Linux】tcp缓冲区大小的默认值、最大值
Author:阿冬哥 Created:2013-4-17 Blog:http://blog.csdn.net/c359719435/ Copyright 2013 阿冬哥 http://blog.cs ...
- 在Spark中使用Kryo序列化
spark序列化 对于优化<网络性能>极为重要,将RDD以序列化格式来保存减少内存占用. spark.serializer=org.apache.spark.serializer.Jav ...
- 在Spark中自定义Kryo序列化输入输出API(转)
原文链接:在Spark中自定义Kryo序列化输入输出API 在Spark中内置支持两种系列化格式:(1).Java serialization:(2).Kryo serialization.在默认情况 ...
- Spark优化之三:Kryo序列化
Spark默认采用Java的序列化器,这里建议采用Kryo序列化提高性能.实测性能最高甚至提高一倍. Spark之所以不默认使用Kryo序列化,可能的原因是需要对类进行注册. Java程序中注册很简单 ...
- VS2015编译FFMPEG,修改FFmpeg缓冲区大小解决实时流解码丢包问题,FFmpeg错误rtsp流地址卡死的问题,设置超时
之前尝试过很多网上利用Windows编译FFmpeg的文章,都没有办法编译X64位的FFmpeg,有些教程中有专门提到编译64位的FFmpeg需要下载mingw-w64-install,但是编译的过程 ...
随机推荐
- element表格多选实现单选
9.element多选表格实现单选 userChoose(selection, row) { console.log(selection,'selection') console.log(row,'r ...
- 洛谷P1288 取数游戏II 题解 博弈论
题目链接:https://www.luogu.org/problem/P1288 首先,如果你的一边的边是 \(0\) ,那么你肯定走另一边. 那么你走另一边绝对不能让这条边有剩余,因为这条边有剩余的 ...
- redux【react】
首先介绍一下redux就是Flux的一种进阶实现.它是一个应用数据流框架,主要作用应用状态的管理 一.设计思想: (1).web应用就是一个状态机,视图和状态一一对应 (2).所有的状态保存在一个对象 ...
- Python--day19--collections模块
常用模块一的各个模块解释: 文件名不要起跟模块名一样:(模块本身就是一个py文件) collection模块: namedtuple方法: 例1: 例2: dequeue方法:双端队列 有序字典Ord ...
- Educational Codeforces Round 11、A B题
A. Co-prime Array 题意:给你一个数列,要求构造两两相邻之间的数互质的数列,可以插入的数的小于10的9次方 思路:其实可以选择靠近10的9次方的最大的三个素数.然后按我下面的方法做就可 ...
- Educational Codeforces Round 54 (Rated for Div. 2) D Edge Deletion (SPFA + bfs)
题目大意:给定你一个包含n个点m条边的无向图,现在最多在图中保留k条边,问怎么删除多的边,使得图中良好的节点数最多,求出保留在图中的边的数量和编号. 良好的节点定义为:删除某条边后该点到点1的最短距离 ...
- P1012 鸡兔同笼问题
题目描述 笼子里有鸡和兔若干,一直它们共有头 \(n\) 个,有脚 \(m\) 只,问笼中的鸡和兔共有多少只? 输入格式 输入包含两个整数 \(n,m(1 \le n \le 100, 2n \le ...
- 基于ElementUI封装Excel数据导入组件
由于前端项目使用的是Vue-cli3.0 + TypeScript的架构,所以该组件也是基于ts语法封装的,组件的完整代码如下: <template> <div id="m ...
- Spark in action Spark 以及SparkR的安装配置说明
Spark以及SparkR的安装(standalone模式) From :ssdutsu @ Inspur Company suzhiyuan2006@gmail.com 操作系统 CentOS 7 ...
- dotnet core 使用 PowerShell 脚本
本文告诉大家如何在 dotnet core 通过 Host PowerShell 的方法使用 PowerShell 脚本 本文提供的方法需要在 dotnet core 2.1 和以上的版本,对于 do ...