Hive参数
hive当中的参数、变量,都是以命名空间开头
通过${}方式进行引用,其中system、env下的变量必须以前缀开头
hive 参数设置方式
1、修改配置文件 ${HIVE_HOME}/conf/hive-site.xml
2、启动hive cli时,通过--hiveconf key=value的方式进行设置
例:hive --hiveconf hive.cli.print.header=true
3、进入cli之后,通过使用set命令设置 set hive.cli.print.header=true;
hive set命令
在hive CLI控制台可以通过set对hive中的参数进行查询、设置
set设置:
set hive.cli.print.header=true;
set查看
set hive.cli.print.header
hive参数初始化配置
当前用户家目录下的.hiverc文件
如: ~/.hiverc
如果没有,可直接创建该文件,将需要设置的参数写到该文件中,hive启动运行时,会加载改文件中的配置。
hive历史操作命令集
~/.hivehistory
Hive 动态分区
开启支持动态分区
set hive.exec.dynamic.partition=true;
默认:false
set hive.exec.dynamic.partition.mode=nostrict;
默认:strict(至少有一个分区列是静态分区)
相关参数
set hive.exec.max.dynamic.partitions.pernode;
每一个执行mr节点上,允许创建的动态分区的最大数量(100)
set hive.exec.max.dynamic.partitions;
所有执行mr节点上,允许创建的所有动态分区的最大数量(1000)
set hive.exec.max.created.files;
所有的mr job允许创建的文件的最大数量(100000)
加载数据
先建立原始表,load数据到原始表,然后从原始表向分区表导数据。
from psn21
insert overwrite table psn22 partition(age, sex)
select id, name, age, sex, likes, address distribute by age, sex;
样例步骤
1.data3
1,bob,12,boy,lol-book-movie,beijing:shangxuetang-sahanghai:pudong1,tob,13,boy,lol-book-movie,beijing:shangxuetang-sahanghai:pudong1,mary,girl,13,lol-book-movie,beijing:shangxuetang-sahanghai:pudong1,lily,girl,14,lol-book-movie,beijing:shangxuetang-sahanghai:pudong1,susan,girl,22,lol-book-movie,beijing:shangxuetang-sahanghai:pudong1,jim,66,boy,lol-book-movie,beijing:shangxuetang-sahanghai:pudong1,tom,55,boy,lol-book-movie,beijing:shangxuetang-sahanghai:pudong1,jack,34,boy,lol-book-movie,beijing:shangxuetang-sahanghai:pudong
2.建原始表
CREATE TABLE psn21( id INT, name STRING, age INT, sex STRING, likes ARRAY, address MAP)ROW FORMAT DELIMITEDFIELDS TERMINATED BY ','COLLECTION ITEMS TERMINATED BY '-'MAP KEYS TERMINATED BY ':'LINES TERMINATED BY '';
3.建分区表
CREATE TABLE psn22 ( id INT, name STRING, likes ARRAY, address MAP ) partitioned by (age int,sex string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' COLLECTION ITEMS TERMINATED BY '-' MAP KEYS TERMINATED BY ':' LINES TERMINATED BY '';
4.导入原始表
load data local inpath '/root/data3' into table psn21
5.导入分区表
set hive.exec.dynamic.partition=true;set hive.exec.dynamic.partition.mode=nostrict; from psn21insert overwrite table psn22 partition(age,sex)select id,name ,likes ,address ,age,sex distribute by age,sex;
hive运行方式
命令行方式cli:控制台模式
脚本运行方式(实际生产环境中用最多)
JDBC方式:hiveserver2
web GUI接口 (hwi、hue等)