一.SQL规范
1、SQL编写规范
逗号放字段前面
对用到的表都用子查询的形式,并且只取需要用到的字段
缩进(select/from/where …and …/group by/order by/join/on…)
符号前后留空格
对一些复杂的逻辑和需要注意的点加上注释说明
别名 同级用1、2、3...区分(如 t1、t2、t3)
2.规范的好处
规范的好处逻辑结构清晰
便于调试
便于模块化处理
美观,条理清楚
3.误区
觉得耗费时间,增加工作量
觉得都一样,自己明白就行
二.数据倾斜(spark)
1、现象
1.1 绝大多数task执行得都非常快,但个别task执行极慢。比如,总共有1000个task,997个task都在10分钟之内执行完了,但是剩余两三个task却要一两个小时。
1.2 之前能够正常执行的Spark作业,某天突然报出OOM(内存溢出)异常
2、原理
2.1 聚合或join等(distinct、groupby、repartition)操作产生shuffle
2.2 拉取各个节点的key到某个节点上的一个task来处理
2.3 整个spark作业的运行进度是由运行时间最长的那个task决定的
2.4 某个task的key特别多,就产生了数据倾斜
一.SQL规范
1、SQL编写规范
逗号放字段前面
对用到的表都用子查询的形式,并且只取需要用到的字段
缩进(select/from/where …and …/group by/order by/join/on…)
符号前后留空格
对一些复杂的逻辑和需要注意的点加上注释说明
别名 同级用1、2、3...区分(如 t1、t2、t3)