我是靠谱客的博主 高挑花生,这篇文章主要介绍Hive优化1. 优化走Mapreduce的SQL2. 使用拆分表的思路,将大表拆分为小表查询3. 分区表与外部表结合使用,分区一般到二级分区4. 数据存储格式和压缩格式设置5. SQL优化,现在分享给大家,希望可以做个参考。

Hive 优化

  • 1. 优化走Mapreduce的SQL
  • 2. 使用拆分表的思路,将大表拆分为小表查询
  • 3. 分区表与外部表结合使用,分区一般到二级分区
  • 4. 数据存储格式和压缩格式设置
  • 5. SQL优化

1. 优化走Mapreduce的SQL

配置hive-site.xml , 默认为minimal
如果表数据按列存储了,select字段优化查询列会更快

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
<property> <name>hive.fetch.task.conversion</name> <value>more</value> <description> Some select queries can be converted to single FETCH task minimizing latency. Currently the query should be single sourced not having any subquery and should not have any aggregations or distincts (which incurs RS), lateral views and joins. 1. minimal : SELECT STAR, FILTER on partition columns, LIMIT only 2. more : SELECT, FILTER, LIMIT only (TABLESAMPLE, virtual columns) </description> </property>

2. 使用拆分表的思路,将大表拆分为小表查询

3. 分区表与外部表结合使用,分区一般到二级分区

4. 数据存储格式和压缩格式设置

复制代码
1
2
3
存储格式:testfile、orcfile 、parquet 数据压缩:zlib(默认),snappy(推荐使用)

5. SQL优化

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1. SQL语句优化 2. join 、filter join 分为common shuffle reduce join 、 map join 、smb join common/shuffle/reduce join join发生阶段为reduce阶段,按照两个表的公共ID字段分组 适用于大表连接大表的情况 每个表的数据都是从文件中读取 map join join发生阶段为map阶段,按照两个表的主外键连接字段分组 适用于小表连接大表的情况 大表的数据是从文件中读取 ,小表的数据从文件中读取存放到内存中 大表数据扫描内存中小表ID完成join 数据存放到内存中的类 DistributedCache SMS join sort-merge-Bucket jon 大表对大表的join优化策略 [JOIN 详解](https://blog.csdn.net/hellozhxy/article/details/82740256)

最后

以上就是高挑花生最近收集整理的关于Hive优化1. 优化走Mapreduce的SQL2. 使用拆分表的思路,将大表拆分为小表查询3. 分区表与外部表结合使用,分区一般到二级分区4. 数据存储格式和压缩格式设置5. SQL优化的全部内容,更多相关Hive优化1.内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部