// 使用scan hive方式读取hive表时,调小maxsize,可增大读取的task任务数
spark.hadoop.mapreduce.input.fileinputformat.split.maxsize 67108864
spark.hadoop.mapreduce.input.fileinputformat.split.minsize 1
// yarn cluster模式下,如果task任务数较多,增大driver的内存和核数,有利于减轻driver压力
spark.driver.memory 8G
spark.driver.cores 4
// 调大广播变量为50M, 使原本join变成走广播变量方式
spark.sql.autoBroadcastJoinThreshold = 52,428,800
// 如果发现executor的存在spill 到内存,磁盘,可增大此参数
spark.executor.memory = xxx
存在1张表,有多次读取,每次读取逻辑不一样,可以合并读取逻辑,实现1次读取表,拿到我们想要的数据。
hive sql时代 容易有使用临时表,存储下中间数据,避免内存占用过大。
但spark sql时代,可以消除临时表,减少多余stage,减少耗时
如果多表join,存在重复逻辑,可以使用group by + max减少join
这一步,比不可少,包括脚本优化前后 结果count数,字段级count数,耗时对比,必须重复验证基本一致后(误差个位数到百位内,占比非常小,因为考虑到逻辑优化前后,某些边界会存在略微差别),才能上线。