源码级解读如何解决Spark-sql读取hive分区表执行效率低问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了源码级解读如何解决Spark-sql读取hive分区表执行效率低问题相关的知识,希望对你有一定的参考价值。

参考技术A

问题描述

在开发过程中使用spark去读取hive分区表的过程中(或者使用hive on spark、nodepad开发工具),部分开发人员未注意添加分区属性过滤导致在执行过程中加载了全量数据,引起任务执行效率低、磁盘IO大量损耗等问题。

解决办法

1、自定义规则CheckPartitionTable类,实现Rule,通过以下方式创建SparkSession。

2、自定义规则CheckPartitionTable类,实现Rule,将规则类追加至Optimizer.batches: Seq[Batch]中,如下。

规则内容实现

1、CheckPartitionTable规则执行类,需要通过引入sparkSession从而获取到引入conf;需要继承Rule[LogicalPlan];

2、通过splitPredicates方法,分离分区谓词,得到分区谓词表达式。在sql解析过程中将谓词解析为TreeNode,此处采用递归的方式获取分区谓词。

3、判断是否是分区表,且是否添加分区字段。

4、实现Rule的apply方法

大数据和云计算的关系

大数据JUC面试题

大数据之Kafka集群部署

大数据logstsh架构

大数据技术kafka的零拷贝

以上是关于源码级解读如何解决Spark-sql读取hive分区表执行效率低问题的主要内容,如果未能解决你的问题,请参考以下文章

通过spark-sql快速读取hive中的数据

Spark-sql读取hive分区表限制分区过滤条件及限制分区数量

Hive 源码解读 准备篇 Debug 讲解

Hive 源码解读 准备篇 Debug 讲解

Hive 源码解读 CliDriver HQL 语句拆分

Hive 源码解读 CliDriver HQL 语句拆分