我是靠谱客的博主 高挑花生,最近开发中收集的这篇文章主要介绍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字段优化查询列会更快

	<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. 数据存储格式和压缩格式设置

存储格式:testfile、orcfile 、parquet
数据压缩:zlib(默认),snappy(推荐使用)

5. SQL优化

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. 优化走Mapreduce的SQL2. 使用拆分表的思路,将大表拆分为小表查询3. 分区表与外部表结合使用,分区一般到二级分区4. 数据存储格式和压缩格式设置5. SQL优化所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部