MAPREDUCE服务 MRS-配置列统计值直方图Histogram用以增强CBO准确度:配置场景
配置场景
Spark优化sql的执行,一般的优化规则都是启发式的优化规则,启发式的优化规则,仅仅根据逻辑计划本身的特点给出优化,没有考虑数据本身的特点,也就是未考虑算子本身的执行代价。Spark在2.2中引入了基于代价的优化规则(CBO)。CBO会收集表和列的统计信息,结合算子的输入数据集来估计每个算子的输出条数以及字节大小,这些就是执行一个算子的代价。
CBO会调整执行计划,来最小化端到端的查询时间,中心思路2点:
- 尽早过滤不相关的数据。
- 最小化每个算子的代价。
CBO优化过程分为2步:
- 收集统计信息。
- 根据输入的数据集估算特定算子的输出数据集。
表级别统计信息包括:记录条数;表数据文件的总大小。
列级别统计信息包括:唯一值个数;最大值;最小值;空值个数;平均长度;最大长度;直方图。
有了统计信息后,就可以估计算子的执行代价了。常见的算子包括过滤条件Filter算子和Join算子。
直方图为列统计值的一种,可以直观的描述列数据的分布情况,将列的数据从最小值到最大值划分为事先指定数量的槽位(bin),计算各个槽位的上下界的值,使得全部数据都确定槽位后,所有槽位中的数据数量相同(等高直方图)。有了数据的详细分布后,各个算子的代价估计能更加准确,优化效果更好。
该特性可以通过下面的配置项开启:
spark.sql.statistics.histogram.enabled:指定是否开启直方图功能,默认为false。
- MapReduce服务_什么是Hive_如何使用Hive
- MapReduce服务_如何使用MapReduce服务_MRS集群客户端安装与使用
- 大数据分析是什么_使用MapReduce_创建MRS服务
- 安全云脑_日志查询与分析-华为云
- MapReduce服务_什么是存算分离_如何配置MRS集群存算分离
- 主机安全配置_Windows主机安全配置_Linux主机安全配置
- MapReduce服务_什么是MapReduce服务_什么是HBase
- MapReduce服务_什么是Kafka_如何使用Kafka
- MapReduce服务_什么是ZooKeeper_如何使用ZooKeeper
- 微服务注册配置中心Nacos_服务发现_动态配置-华为云