hive 学习笔记——表的入门操作和命令

1、受控表(managed table)包括内部表、分区表、桶表;

1.1、分区表

创建分区表:

create table banji(id INT,name STRING) partitioned by(grade INT) row format delimited fields terminated by '\t';
create table member(id INT,name STRING) partitioned by(year INT,month INT) row format delimited fields terminated by '\t';

 

为分区表加载数据

load data local inpath 'student1' into table banji partition(grade=1);
load data local inpath 'student1' into table banji partition(year=2014,month=1);

 

*分区字段在文件中是没有的,但是查询是显示出来的,分区字段是作为虚拟列存在的

分区不是越多越好,需要对分区数量进行限制(分区过多,会产生过多的小文件)

分区字段:查询比较频繁 ,并且不会有很多枚举值的字段适合作为分区字段

1.2、桶表(bucket table)

桶就是那个模的数字

优点:每个桶的数据量差不多,在进行表连接查询的的时候方便

缺点:按业务字段查的时候没效果

应用场景:抽样、表连接

创建桶表

create table bucket(id INT,name STRING) clustered by(id) into 3 buckets;

 

启用桶表

SET hive.enforce.bucketing=true;

  

添加数据

insert overwrite table bucket select id ,name from banji;

*不能用load方式,load方式是简单的复制进hive表,insert的时候,会通过mr处理分桶

2、非受控表指外部表

删除表的时候只删除了表定义,不会对HDFS中的数据进行删除

创建外部表

create external table ext_table(c1 STRING,c2 STRING) row format delimited fields terminated by '\t' location '/ext_data';

 

3、命令行工具

 

3.1、set命令可以设置变量也可以显示变量

3.2、设置启动初始化命令

*hive启动时会默认执行home下的.hiverc文件,该文件位于home目录下

set hive.cli.print.current.db=true ;
#打印当前数据库名
set hive.cli.print.header=true;
#打印标题行
set hive.querylog.location=logpath;
#设置hive的查询日志保存地址

  

3.2、在不进入hive的命令行的情况下执行hvie命令

hive -e "hive命令"
hive -e "">>aaa
#结果追加到aaa文件中
hive -S -e "">>bbb
#输出较少日志

   

3.3、指定hive执行日志存放地址

hive --hiveconf hive.querylog.location=logpath

  

3.4、执行文件中的hive脚本

hive -f file

在hive命令行时执行:

source file

 

转载于:https://www.cnblogs.com/hpuCode/p/5204309.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值