Hive系统讲解

1.hive中的变量

1.查看所有的变量

hive> set;

2.变量及属性

命名空间使用权限描述
hivevar可读/可写用户自定义变量
hiveconf可读/可写Hive相关的配置属性
system可读/可写Java定义的配置属性
env只可读shell环境定义的环境变量

3.定义变量

–define key=value 与 --hivevar key=value 是等价的

示例:

$ hive --define y=5
hive> set y;
	y=5

引用变量:

hive> select * from table1 where i=${hivevar=y}
hive> select * from table1 where i=${y}

2.hive执行查询语句

执行一条sql语句:

$ hive -e "select * from table1 limit 10"

保存查询结果至/txx/hive_result:

$ hive -S -e "select * from table1" > /txx/hive_result

执行一个sql脚本:

$ hive -f /path/to/file/query.sql

在hive命令行中执行命令

hive> source /path/to/file/query.sql 

在hive命令前加上一个!并以;结束,就可以在hive命令行中执行shell命令:

hive> !pwd;

在hive命令中执行hadoop fs -ls /,只需要把hadoop关键字去掉即可执行

hive> dfs -ls /;

设置查询时打印字段名称:

hive> set hive.cli.print.header=true;

设置提示符中,显示当前所在的数据库:

hive> set hive.cli.print.current.db=true;

3.强行删除数据库

hive不允许用户删除一个包含有表的数据库,即使表是空表也不行。需要先删除表,才能删除库。
但是,也可以在命令后面加上关键字cascade强制删除。

hive> drop database if exists tempdb cascade;

4.复制表

  • 非分区表
hive> create table t_copy as select * from t_temp;
  • 分区表
hive> create table t_copy like t_partition;
hive> insert overwrite table t_copy partition(dt) 
	> select * from t_partition;

要求:这里是动态插入,要求t_copy表是nostrict模式。

5.修改表信息

1.修改外部表的存放路径

hive> alter table t_temp set location '/txx/temp';

2.表重命名

hive> alter table t_temp rename to t_temp1;

3.修改列信息

hive> alter table t_+temp
    > change column idx id string comment '***'
    > after name;

4.修改存储属性

hive> alter table t_temp set FileFormat SEQUENCEFILE;

6.对分区表的保护措施

防止对分区表进行误删或者查询

hive> alter table t_temp partition(year=2019) ENABLE NO_DROP;    #禁止删除
hive> alter table t_temp partition(year=2019) ENABLE OFFLINE;    #禁止查询

这里的ENABLE可被替换成DISABLE,达到反向操作的目的,这些操作都不可用于非分区表。

7.like与Rlike

like不加缀述
rlike字句是hive对like的扩展,例如在被查的一个结构化字段时:

hive> select name,address.street from employee
    > where address.street RLIKE '.*(Chicago(Ontario)).*';

8.Having字句的使用

9.Join字句

hive总是按照从左到右的顺序执行的。

hive> select a.cloumn1,b.column2,c.column3
    > from a join b on a.column1=b.column1
    >        join c on a.column1=c.column1;

上例中,Hive会对每对join对象启动一个MapReduce任务,所以首先会启动一个MapReduce Job对表a和表b进行连接操作,然后再启动一个Job将第一个MR的结果与表C进行连接操作,当对3个或者多个表进行Join操作时,如果每个on字句都使用相同的链接键的话,那么只会产生一个MapReduce Job.

说明:如果Join操作,尽量将小表放在左边,系统会将其加载到内存,使得Join能更快的执行。

10.视图

1.降低查询复杂度(可以将嵌套查询的字句改为视图)
2.限制基于条件过滤的数据(只暴露部分数据,可保护重要信息数据不被随意查询)

hive> create table userinfo(firstname string,lastname string,id string,passwd string);
hive> create view safe_info as
    > select firstname ,id
    > from userinfo
    >where id like "510*";

注意:
1.没有show views的语句
2.不能使用drop table语句来删除视图,要用drop view
3.视图是只读的,不能用作insert语句或者load命令
4.只允许修改元数据中的Tbproperties属性内容

11.分区模式

这个就根据实际需求来吧。分区的好处简直太多了!

12.hive调优相关

见下篇文章。

13.压缩与文件格式

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值