BenjaminYang In solitude, where we are least alone

hive学习(六) 参数和动态分区

1.hive 参数、变量

1.1hive的命名空间:

hive当中的参数、变量,都是以命名空间开头
 
 
通过${}方式进行引用,其中system、env下的变量必须以前缀开头

1.2hive 参数设置方式

1、修改配置文件 ${HIVE_HOME}/conf/hive-site.xml
2、启动hive cli时,通过--hiveconf key=value的方式进行设置
例:hive --hiveconf hive.cli.print.header=true
3、进入cli之后,通过使用set命令设置
默认是false

1.3hive set命令

在hive CLI控制台可以通过set对hive中的参数进行查询、设置
set设置:
set hive.cli.print.header=true;
set查看
set hive.cli.print.header

 

hive参数持久化配置
当前用户家目录下的.hiverc文件
如:   ~/.hiverc
进入hive客户端查看
如果没有,可直接创建该文件,将需要设置的参数写到该文件中,hive启动运行时,会加载改文件中的配置。
hive历史操作命令集
~/.hivehistory
 

2.hive动态分区

示例:

2.1数据文件data3

[root@node04 ~]# cat data3
1,小明1,10,boy,lol-book-movie,beijing:changping-shanghai:pudong
2,小明2,10,man,lol-book-movie,beijing:changping-shanghai:pudong
3,小明3,10,man,lol-book-movie,beijing:changping-shanghai:pudong
4,小明4,20,man,lol-book-movie,beijing:changping-shanghai:pudong
5,小明5,20,boy,lol-movie,beijing:changping-shanghai:pudong
6,小明6,20,boy,lol-book-movie,beijing:changping-shanghai:pudong
7,小明7,20,boy,lol-book,beijing:changping-shanghai:pudong
8,小明8,10,boy,lol-book,beijing:changping-shanghai:pudong
9,小明9,10,boy,lol-book-movie,beijing:changping-shanghai:pudong 

2.2创建表psn21

create table psn21(
id int,
name string,
age int,
sex string,
likes array<string>,
address map<string,string>
)
row format delimited
fields terminated by ','
collection items terminated by '-'
map keys terminated by ':'
lines terminated by '\n';

2.3加载data3数据到psn21表

load data local inpath '/root/data3' into table psn21;
 

2.4创建一个带分区的表psn22

create table psn22(
id int,
name string,
likes array<string>,
address map<string,string>
)
partitioned by(age int,sex string)
row format delimited
fields terminated by ','
collection items terminated by '-'
map keys terminated by ':'
lines terminated by '\n';

 

2.4将psn21的表导入到带分区的psn22表:

#在hive2.x版本如果直接将psn21查询到的对应字段插入到psn22表,会报错。3.x版本是可以的
from psn21 insert into psn22 select id,name,likes,address,age,sex;
#正确操作应该用一个关键字 distribute by partition1,partition2
from psn21 insert into psn22 select id,name,likes,address,age,sex distribute by age,sex;
 

 3.常用参数设置

3.1开启支持动态分区

默认:false
set hive.exec.dynamic.partition=true;
默认:strict(至少有一个分区列是静态分区)
set hive.exec.dynamic.partition.mode=nostrict; 
 

3.2相关参数

每一个执行mr节点上,允许创建的动态分区的最大数量(100)
set hive.exec.max.dynamic.partitions.pernode;

 

所有执行mr节点上,允许创建的所有动态分区的最大数量(1000)
set hive.exec.max.dynamic.partitions;

 

所有的mr job允许创建的文件的最大数量(100000)
set hive.exec.max.created.files;

 

 
 

 

posted @ 2019-01-16 18:06  benjamin杨  阅读(605)  评论(0编辑  收藏  举报