文章最前: 我是Octopus,这个名字来源于我的中文名--章鱼;我热爱编程、热爱算法、热爱开源。所有源码在我的个人github ;这博客是记录我学习的点点滴滴,如果您对 Python、Java、AI、算法有兴趣,可以关注我的动态,一起学习,共同进步。
1. 问题描述
跑的任务出现该问题 22/07/12 15:16:30 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)
2.解决方法
通过conf参数设置spark.kryoserializer.buffer.max,spark-submit在提交spark作业时可以带很多参数,其中有一个参数--conf
可以设置spark.kryoserializer.buffer.max的大小
export ARROW_PRE_0_15_IPC_FORMAT=1
/bin/spark2-submit \
--name stockout_eval_write \
--master yarn \
--deploy-mode cluster \
--driver-memory 4g \
--executor-memory 4g \
--executor-cores 1 \
--queue root.algorithm \
--conf spark.pyspark.driver.python=./ANACONDA/py37/bin/python \
--conf spark.pyspark.python=./ANACONDA/py37/bin/python \
--conf spark.kryoserializer.buffer.max=512m \