spark sql读数据阶段并行度调整
不同的开窗函数是在不同的stage阶段执行的,是串行的逻辑,如果他们具有同样的窗口,我们可以使用写小技巧,在同一个开窗函数中将所有的信息一起求出来
spark sql in筛选多于一定数量时,in中的值首先会构建localtable,然后广播出去,作为广播表进行broadcast join 过滤主表数据,但是如果主表数据元数据信息统计不准,会导致广播错误,造成driver端oom
难度较高较综合的题目
spark sql语句中如果case中when有几十个,会导致StackOverflowError错误
尽然不直接过滤分区,而选择这种方式,直接造成了全表扫描,本来1min就能完成的任务被搞成了40min,无力吐槽
提升多次explode导致效率低下的方法
通过子查询过滤分区时发现并没有直接命中分区,而是全表扫描,导致任务运行很慢,就很奇怪
总结一些常用的调优参数
开发过程中,发现针对主表分区的筛选没有生效,造成对主表的全表扫描,起了27w+的task读数据,非常慢