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") //最多拉取次数