hive调优笔记

来源:互联网 发布:vincent知乎 编辑:程序博客网 时间:2024/06/05 02:19


hiveSQL官网:https://cwiki.apache.org/confluence/display/Hive/Hive+Transactions

https://cwiki.apache.org/confluence/display/Hive/Home

Hive所有SQL语法https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Select#LanguageManualSelect-WHEREClause


hive在创建表格时候有多种格式类型,默认格式文件格式textFile,常用的textFile、ORC,RCFile、parquet另外还有AVRO、inputformat

,数据存储分为:案列存储和按行存储

hive表文件压缩格式常用压缩方式ZLIB、SNAPPY

snappy压缩语句:

create  table quyu_orc_snappy(id int,phone string,province string,city string)row  format  delimited fields  terminated  by  ',' stored as orc tblproperties("orc.compress"="SNAPPY") ;

未压缩前数据大小:



用snappy压缩格式后文件大小:



比较:



综上:

在实际的开发当中,hive表的数据

1.存储格式:orcfile/qarquet

2.数据压缩格式:snappy


hive 优化方式有可以从两大方面

数据存储的优化,数据处理的优化

一数据优化:

1.大表拆分成子表

2.外部表和分区表

   a二者结合使用 

   b单独使用


3.数据压缩

存储格式(常用textfile(创建表默认)、RCFile、parquet)

压缩格式:常用snappy

二、数据处理优化

1.Hive的SQL语句

优化SQL语句

Join :有三种join:map join、reduce join、 SMB join

具体事例

                           事例一:

优化前:

select d.already_check_num,i.order_code from 
(select order_info_id,already_check_num from order_detail) d 
join 
(select id,order_code from order_info)  i 
on
i.id=d.order_info_id;

性能:

优化后:

select d.already_check_num,i.order_code from
order_detail d
join 
order_info i
on 
i.id=d.order_info_id;

性能:


实例二:

优化前:



select d.already_check_num,i.order_code,d.check_status from 


order_detail d 
join 
order_info i
on 
i.id=d.order_info_id  where  d.check_status="un_check"

优化后:

select d.already_check_num,i.order_code from 
(select order_info_id,already_check_num from order_detail where check_status ="un_check") d 
join 
(select id,order_code from order_info)  i 
on
i.id=d.order_info_id;

性能:

vi  /opt/cloudera/parcels/CDH-5.3.6-1.cdh5.3.6.p0.11/etc/hive/conf.dist/hive-default.xml.template

快速查询paralle

:/paralle即可

join 并发执行(相互不干扰的情况可以让多个join并发执行)

在hive-default.xml中设置参数默认情况下最多可以有8个job任务同时执行如下图,一般自定义10-15之间


动态分区属性:设置文nonstrict表示允许所有分区都是动态的(默认strict)

---设置为strict,表示必须保证至少一个分区是静态的



2.mapreduce

控制reduce number

如在通常情况下数据只经过map端/*map..

  JVM的优化


0 0