Spark CBO

CBO BackGround

直方图种类有:等宽直方图、等高直方图、V-优化的直方图

在这里插入图片描述
Enhancing Spark SQL Optimizer with Reliable Statistics

Spark Column histogram and CBO

介绍内容包括:

  • Spark table statistics 和 column statistics
  • Join Cost 在有无statistics下的计算区别
  • Spark CBO 引入的参数:
    • spark.sql.statistics.histogram.enabled : default = false,启用column histogram 信息收集
    • spark.sql.cbo.joinReorder.card.weight : 在下面公式中CostCPU 占比
    Cost = rows * weight + size * (1 - weight)
    Cost = CostCPU * weight + CostIO * (1 - weight)
    
  • SQL优化Target
  • Build侧选择 : 通过filter 算子后的估算,build side 和 probe side 可能互换
  • 优化Join 类型: SortMergeJoin 变为 BroadcastJoin
  • 优化Join Order: Left Deep Join 变为 Bushy Join

HIVE 0.14 Cost Based Optimizer (CBO) Technical Overview

CBO 三个优化效果

  • Join ordering optimization
  • Bushy join support
  • Join simplification

Equi-depth Histogram Construction for Big Data with Quality Guarantees

这个不是等高直方图算法
构建等宽直方图

  • 计算每个分区的Boundary,和 boundary size.
  • 根据目标bins数量,计算目标 boundary size
  • 合并每个分区boundary,得到近似Boundary
  • µs 为计算误差,需要关注,论文中说明在实际大数据中误差较好

Hive:percentile_approx 原理与实现

主要介绍hive中percentile_approx函数的实现。函数的四个组成部分update、merge、sum 和 uniform,为了简化问题,这里只介绍 update 和 merge。

update:

  • 填充Bin的x,y值
  • Bin满了之后,进行合并bin
    在这里插入图片描述
    merge:
    merge和update类似,直接合并bin区间

在这里插入图片描述

SPARK-17074 generate equi-height histogram for column

Spark 中equi-height histogram 计算,方式一还是依赖于percentile_approx 函数进行计算

Cost-Based Plan Selection Enumerate, Estimate, Select

基于前一算子的Cost,estimate 当前selection ,projection,join 等算子的cost 计算算法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值