spark常用的调参详解

 1.在submit中设置

在submit中设置注意后面的  \ 

--conf "spark.shuffle.blockTransferService=nio" \   大数据集shuffle的时候,节点之间传输数据时使用netty 改为nio
--conf "spark.debug.maxToStringFields=500"  \     字段的字符串太长了
--conf "spark.sql.broadcastTimeout=1200"  \    广播等待超时时间,单位秒
--conf "spark.executor.extraJavaOptions=-XX:-UseGCOverheadLimit" \  关闭限制GC的运行时间(默认启用 )
--conf "spark.port.maxRetries=128" \    Spark任务都会绑定一个端口来显示WebUI,默认端口为4040,如果被占用则依次递增+1端口重试,重试次数由参数spark.port.maxRetries=16控制,默认重试16次后就放弃执行

 2.在代码中设置

.config("spark.serializer", "org.apache.spark.serializer.KryoSerializer") //使用kryo序列化的类库
/*   .config("spark.shuffle.manager", "hash")//设置为hashShuffleManager
     .config("spark.shuffle.consolidateFiles", "true")//开启consolidate机制  这两个不能使用不知道怎么回事 */
.config("spark.default.parallelism", "50") //设置并行度 根据所使用的core来算  是core的3--5倍
.config("spark.shuffle.file.buffer", "64k") //设置map端内存缓冲区大小
.config("spark.reducer.maxSizeInFlight", "96M") //设置reduce端拉取数据的大小
.config("spark.shuffle.memoryFraction", "0.3") //reduce端聚合内存占比
.config("spark.shuffle.io.maxRetries", "6") //最多拉取次数

猜你喜欢

转载自blog.csdn.net/weixin_41804049/article/details/85329388