一 、HIVERSERVER2和HIVESERVER
1、HIVERSERVER仅允许单点登录,HIVERSERVER2允许多个客户端登陆。
2、HIVERSERVER2启动后会开启10000端口和10002端口,10000用于远程客户端连接,10002可以查看节点的hive连接情况以及历史查询等信息。
二、HIVE动态分区
1、hive.exec.dynamici.partition=true; #开启动态分区,默认是false
2、set hive.exec.dynamic.partition.mode=nonstrict; #开启允许所有分区都是动态的,否则必须要有静态分区才能使用。
动态分区相关的调优参数:
set hive.exec.max.dynamic.partitions.pernode=100 (默认100,一般可以设置大一点,比如1000)
表示每个maper或reducer可以允许创建的最大动态分区个数,默认是100,超出则会报错。
set hive.exec.max.dynamic.partitions =1000(默认值)
表示一个动态分区语句可以创建的最大动态分区个数,超出报错
set hive.exec.max.created.files =10000(默认) 全局可以创建的最大文件个数,超出报错。
三、HIEV分桶
1、建表(hive2.0之后默认开启分桶)
create table bucketTable(
id int,
name string,
gender string
) clustered by (id) into 4 buckets
row format delimited fields terminated by ',';
2、MR的数量等于分桶的数量等于文件的数量。
3、文件中数据的分布根据id的哈希值对分桶的数量取余来进行决定。
4、select * from bucketTable tablesample(bucket x out of y); x的数量为桶的起始下标,下标从1开始,y是分桶数量的倍数或者因子,而取桶的个数为桶的数量/y。