程序开始前我看从以下四方面设置
1.executor-memory
这个参数是设置分配任务总内存的
2.excutor-cores
设置集群的总核心数
3.num-excutors
申请的excutor的数据,最好和分区数量成倍数。
4.repartition
官网建议为excutors的2-3倍
详细见下图:
程序运行结束之后我们看看spark的UI界面,因为只是看输入日志能难判断出程序在哪里耗费时间比较长,一般是从两点判断
一是序列化,如果序列化时间过长,肯定不行,
二是GC,gc时间过长肯定也不行