简介: Hive是大数据领域常用的组件之一,主要用于大数据离线数仓的运算,关于Hive的性能调优在日常工作和面试中是经常涉及的一个点,因此掌握一些Hive调优是必不可少的一项技能。影响Hive效率的主要因素有数据倾斜、数据冗余、job的IO以及不同底层引擎配置情况和Hive本身参数和HiveSQL的执行等。本文主要从建表配置参数方面对Hive优化进行讲解。
创建一个普通的表
create table test_user1(id int, name string,code string,code_id string ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
查看表信息
DESCRIBE FORMATTED test_user1;
我们从该表的描述信息介绍建表时的一些可优化点。
2.1表的文件数
numFiles表示表中含有的文件数,当文件数过多时可能意味着该表的小文件过多,这时候我们可以针对小文件的问题进行一些优化,HDFS本身提供了
解决方案:
1.Hadoop Archive/HAR:将小文件打包成大文件。
2.SEQUENCEFILE格式:将大量小文件压缩成一个SEQUENCEFILE文件。
3.CombineFileInputFormat:在map和reduce处理之前组合小文件。
4.HDFS Federation:HDFS联盟,使用多个namenode节点管理文件。
除此之外,我们还可以通过设置hive的参数来合并小文件。
1.输入阶段合并
需要更改Hive的输入文件格式即参hive.input.format
默认值是org.apache.hadoop.hive.ql.io.HiveInputFormat
我们改成org.apache.hadoop.hive.ql.io.CombineHiveInputFormat
这样比