字节对spark sql的优化

Spark SQL通过SQL解析器构成语法树,然后通过规则执行器(逻辑执行器,物理执行器,优化器)先获得Unresolved Logical Plan,然后获得Resolved Logical Plan,再通过optimzi 优化,获取Optimized Logical Plan,通过Query planner获取物理执行计划

1.对bucket优化

这块优化主要针对join进行优化,spark这块优化包括(hash shuffle join,broadcast shuffle join,sortMerge Shuffle join)
第一个适合小表join小表,大表join小表
先进行shuffle分区,对分区数据进行hash join
第二个适合小表join大表
将小表广播到所有节点,然后进行hash join

第三个适合所有场景
先进行shuffle,然后区内排序,然后直接遍历有序序列进行join
不过还是有性能问题,如果直接避免shuffle,就能提高很大性能

字节通过对表进行分桶,在join的适合,不进行shuffle

2.物化列,物化视图

查询复杂数据结构,例如map
map中person对象中的age

字节通过将age字段进行物化,在内部给映射到age字段,在查询person,age的时候变为age

物化视图将对表经常查询的一些聚合操作物化成一个视图,聚合查询表的时候就会重写为对物化视图的字段去查询

3.针对shuffle优化

在mapper这段会产生很多分区文件,reducer会拉去分区文件,如果此时cpu或者io跑满或者机器故障,导致reduce无法拉去数据,导致stage retry,然后会慢慢导致更多的retry,最后导致任务失败

字节:mapper按原方案先写到本地,写完后上传hdfs,reduce如果拉取失败就去hdfs上拉去

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值