学习Hive(四)Hive视图、索引、运行方式、GUI接口、权限管理

一、Hive Lateral view:使用虚拟表的概念。但并非是真正的视图。

1.1、与UDTF函数(split、explode)联合使用。

1.2、首先通过UDTF函数将数据拆分成多行,再将多行结果组成一个虚拟表(支持别名)。

1.3 主要场景:Hive在使用UDTF函数时,查询只能包含一个UDTF,不能包含其他字段,不能多个UDTF联合使用。错误例子:

1.4 使用语句:

select count(distinct(myTable1.myClo1)),count(distinct(mytable2.myClo2)) from psn 
lateral view explode(likes) myTable1 AS myClo1
lateral view explode(address) mytable2 AS myClo2,myClo3;

二、Hive视图。

2.1,创建视图: create view v_psn as select * from psn;

         查看视图:show tables;创建视图后mysql中查看hive元数据信息:

        

2.2 Hive 不支持物化视图。Hive视图只能查询,不能加载数据。

2.3 view 中定义了order by/limit语句,使用view查询时也用了order by/limit语句。view中定义的优先执行。

  创建:create view v1_psn as select * from psn order by id;

使用:select * from  v1_psn order by id desc limit 3;

效果,结论:view中的先执行。

2.4 支持迭代视图。

2.5 视图创建只是建立一份元数据。查询视图时再执行响应子查询。

2.6 删除视图:drop view v_psn;

三、Hive索引。

3.1:创建索引。最下面的in_psn_table 是存储索引的偏移量与数据的。也可不指定,会自动创建

create index in_psn on table psn(name)
as 'org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler' with deferred rebuild
in table in_psn_table;

3.2 索引表创建时,并不会自动将数据的索引构建进去。需要手动构建。

alter index in_psn on psn rebuild; in_psn_table 存储的 索引列、路径、offset

如果数据表构建完索引后又新增数据,需要rebuild重建索引。

3.3 删除索引:drop index in_psn on psn;

 

四、Hive运行方式。

四种:命令行、JDBC、脚本、web GUI接口.前两种之前已经写过就不再说了。

4.1hive命令行模式中:

可以直接访问hdfs:

发现查询 比直接hdfs查询要快,因为hive已经与hdfs连接中。

可以与本地linux交互,例:学习Hive(四)Hive视图、索引、运行方式、GUI接口、权限管理_第1张图片

4.2  脚本方式运行。

非客户端下:hive -e "select * from psn limit 2;"学习Hive(四)Hive视图、索引、运行方式、GUI接口、权限管理_第2张图片

查询数据重定向到文件:hive -e "select * from psn limit 2;" >aaa;

hive -e 会有些提示信息。去除提示信息(静默模式):hive -S -e "select * from psn limit 2;"

从文件 读取sql命令执行:例:创建个文件:echo "select id from psn;select name from psn"> bbb

                                                 执行文件中的sql :hive -f bbb;

结果:学习Hive(四)Hive视图、索引、运行方式、GUI接口、权限管理_第3张图片

还可以使用 hive -i bbb 也能执行,区别就是,-i代表执行完文件中的sql后会停留在hive客户端状态。

 

hive客户端状态执行文件中的说起来:source bbb;

五、GUI接口。

这个没什么作用。略过。

六、Hive权限管理。

学习Hive(四)Hive视图、索引、运行方式、GUI接口、权限管理_第4张图片

主要说第二种:

学习Hive(四)Hive视图、索引、运行方式、GUI接口、权限管理_第5张图片

学习Hive(四)Hive视图、索引、运行方式、GUI接口、权限管理_第6张图片

添加权限管理:

1、hive-site.xml中添加。

  hive.security.authorization.enabled

  true

  hive.server2.enable.doAs

  false

  hive.users.in.admin.role

  root

  hive.security.authorization.manager

  org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizerFactory

  hive.security.authenticator.manager

  org.apache.hadoop.hive.ql.security.SessionStateUserAuthenticator

2、注意服务开启使用hiveserver2. 

客户端连接登录:  学习Hive(四)Hive视图、索引、运行方式、GUI接口、权限管理_第7张图片  默认用户为public权限

这时很多功能无法使用。

使用root连接。学习Hive(四)Hive视图、索引、运行方式、GUI接口、权限管理_第8张图片

使用root登录后依然为public权限。很多功能还是用不了。但是可以通过:set role admin;给自己admin角色。;

学习Hive(四)Hive视图、索引、运行方式、GUI接口、权限管理_第9张图片

创建角色:create role test; 删除角色:drop role test; 查看权限:show role grant role test;

授权: grant admin to role test; 向角色回收权限 revoke admin from role test;

下面的了解下即可:

学习Hive(四)Hive视图、索引、运行方式、GUI接口、权限管理_第10张图片

学习Hive(四)Hive视图、索引、运行方式、GUI接口、权限管理_第11张图片

你可能感兴趣的:(大数据)