2020.9.28(Hive视图、索引、权限管理)

回顾:上节课讲了hive的参数设置,hive的运行方式,hive的动态分区,分桶,lateral view这五个知识点。遗留了两个问题:
1.看一下hive的源码,现在面试中,hive的源码还从来没有被问到过。在hive这个环节不会浪费太多时间,把源码讲清楚,没有必要。
但是虽然不讲源码的详细知识点,但是会告诉你,如果拿到一个陌生框架之后,应该怎么去找源码,或者怎么去看源码。有同学把源码下载回来了一脸懵逼,连入口都找不到。今天讲一下入口该怎么找:
大部分 不管是hadoop、hive、hbase、spark,大概都是这样一个寻找流程:
如果想看源码的话,给一个建议:在看源码过程中,千万不要每一个方法都点进去!源码是别人写的,写的层次可能非常非常深,如果一层一层往里面点的话,点到最后可能看明白了,回头一想,我刚刚是从哪个地方点进来的,一脸懵逼。如果那一行里面有注释、或者看到方法名称,一些类的名称能大概猜到它是什么意思,没必要往下看了,先遗留下来,之后有时间了可以再慢慢看。
2.在hive2.x的时候已经没有hwi这个web页面了。但在1.x的时候还是有的,现在看一下。

hive --service hwi

hwi就是webUI的接口,打开浏览器:node01:9999/hwi
在这里插入图片描述
change user info 改变用户信息,这里写用户和组,但在hive里面没有用户这个概念,所有随便写,写什么都行。点提交authorization is complete 认证授权已经完成。
怎么写sql语句和执行过程?
create session->随便取个名称,submit
在这里插入图片描述

任何结果都没有,必须要把start query选择成yes,这时候在result bucket里面可以看到对应的结果。
再回来,点击list session->点manager
这时候又回到这个页面了,重新再次提交SQL语句,这时候再去查看,会发现是两遍对应的结果?
为什么?
在这里插入图片描述

上面是第一次查询的结果,而下面是第二次查询的结果。每次查询的时候,并不会把上一次查询的结果消失掉。而是会保留每一次执行的过程。非常不好用。
稍微看一下就完事了,无论用什么版本,这个功能基本上都不会用的,这也是为什么2.x的时候hwi被淘汰掉的原因。

虽然被淘汰掉了,但他提供了一种平台化和可视化的思路。以后所做的项目都应该叫平台

如何查看hive源码?入口在什么地方?
每次在黑窗口里执行的都是hive的脚本,所以找入口,一定要从脚本里面进行查找。

cd /opt/bigdata/hive-2.3.4/bin
ls

beeline ext hive hive-config.sh hiveserver2 hplsql metatool schematool

vi hive

366行,大部分同学都没有耐心看下去,所有从里面开始找东西,找自己想要的,第一次输入hive的时候,相当于输入了hive --service cli默认运行的是命令行的命令,有一堆参数的判断 ,如果什么都不写会默认判断为cli
在这里插入图片描述
只要去对应的目录里面,找cli.sh文件

cat cli.sh

在这里插入图片描述

hive也是用Java写的,所有只要找主类就可以了,一个main函数程序入口
在这里插入图片描述在这里插入图片描述
执行这个run()方法,里面会有一些参数判断,告诉我应该怎么解析,哪些初始化操作,然后慢慢完成相应操作,这地方就是整个程序的入口操作,当把它启动好之后,意味着命令行已经准备好了。提交sql语句的时候,会有服务进行接收,接收完之后进行解析,转化,执行的过程。

hive视图

只要接触关系型数据库,一定会用对应视图的。用的非常非常多。
视图主要用在什么场合?有什么样的用途?在公司里怎么用的?
如果写的sql语句非常简单,只是几张表的关联,这个东西完全没必要,如果语句非常非常复杂,比如说要写一个好几十行的sql语句,这里面包含了N多个子查询,并且有很多子查询都是重复的sql语句,这时候,就必须把它定义成一个视图。这个时候直接写视图就可以了,可以减少整个sql语句的复杂度。
第二种情况,定义一个视图,把它定义成多张表join之后结果表。视图非常简单,就是一个sql语句,每次在使用视图的时候,都会把sql语句提前进行执行。把结果暂存成视图,比如有三张表,每张表里面取一个字段,把这三个字段当成一个视图,视图完成之后可以成一张中间表。用的时候直接拿视图进行运行就可以了。而不需要每次都进行一个join的代码编写。但执行的时候,一定会执行的。

hive里面也支持了对应的视图操作。
在这里插入图片描述
hive View视图
– 和关系型数据库中的普通视图一样,hive也支持视图
– 特点:
不支持物化视图:视图是虚拟表,虚拟表表示不是实实在在存在数据的表,物理表表示实实在在存在数据文件的,比如在数据库里看到的那些表都是物理表。视图每次在做的时候,都需要优先先执行sql语句,然后把结果当成虚拟视图。素有视图也可以被当成表。物化视图的概念:MySQL里面是不支持物化视图的,只有在Oracle里面是支持的,物化视图是什么意思?比如现在有个t1 t2 t3每次从里面取c1 c2 c3三个字段,这时候,这三个字段也要被当成一张物理表,进行一个实实在在的存储。这叫物化视图。如果把这三个表进行join操作,把这个结果也缓存了一下,这时候如果t1 t2 t3改变了,物化视图会刷新,这其实分了两种策略,一种叫uncommit,一种叫undemand,一种是只要t1 t2 t3发生改变,物化视图也跟着变,第二种是每次查询的时候才会把数据进行更新。不查询就不更新了。有这么两种方式,现在在公司企业里面,Oracle已经不像以前那么流行了。以前在阿里有一个去IOE的概念,o就表示Oracle
只能查询,不能做加载数据操作:MySQL里面定义的视图,可以往里面插入数据么?如果只是操作一张表是可以往视图里面更新数据的,但多表的时候是有问题的。但hive里面是都不可以的。
视图的创建,只是保存一份元数据,查询视图时才执行对应的子查询:视图就是一个sql语句,每次在执行的视图的时候,会优先把视图的sql语句先执行,再执行自己定义的SQL语句
view定义中若包含了ORDER BY/LIMIT语句,当查询视图时也进行ORDER BY/LIMIT语句操作,view当中定义的优先级更高:每次定义的时候,视图里面的东西会优先执行,视图执行完成之后,外面的才会执行
view支持迭代视图:视图里面可以嵌套视图

可以在MySQL里面查看

mysql -uroot -pok
mysql> use hive_remote
select * from TBLS;

里面的字段不是managered_table就是external_table。不是内部表就是外部表,没有视图概念,创建一个新的视图
Create/Drop/Alter View

CREATE VIEW [IF NOT EXISTS] [db_name.]view_name [(column_name [COMMENT column_comment], ...) ]
  [COMMENT view_comment]
  [TBLPROPERTIES (property_name = property_value, ...)]
  AS SELECT ...;
hive> create view v_psn as select * from psn where id > 5
show 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
org.apache.hive.jdbc.HiveDriver是Apache Hive项目的JDBC驱动程序。Hive是一个基于Hadoop的数据仓库基础设施,它提供了一个SQL类似的查询语言(HiveQL)来处理存储在Hadoop集群中的大规模数据。 要下载org.apache.hive.jdbc.HiveDriver,可以按照以下步骤进行: 1. 打开Apache Hive项目的官方网站,可以在https://hive.apache.org/上找到。 2. 导航到“下载”页面,该页面通常位于网站导航栏的顶部或底部。 3. 在下载页面上,查找与你的操作系统和Java版本兼容的Hive JDBC驱动程序。 4. 单击下载链接以开始下载驱动程序。根据你的网速和文件大小,下载过程可能需要一些时间。 5. 下载完成后,将下载的JAR文件保存到你指定的文件夹中。 下载Hive JDBC驱动程序后,你可以在Java项目中使用它来连接和查询Hive服务器。只需将驱动程序JAR文件添加到项目的类路径中,然后使用以下代码示例来加载并注册HiveDriver: ``` import java.sql.DriverManager; import java.sql.Connection; public class HiveDriverExample { public static void main(String[] args) { try { // 加载HiveDriver类 Class.forName("org.apache.hive.jdbc.HiveDriver"); // 建立Hive服务器连接 Connection con = DriverManager.getConnection("jdbc:hive2://localhost:10000/default", "", ""); // 在连接上执行查询语句等操作 // ... // 关闭连接 con.close(); } catch (Exception e) { e.printStackTrace(); } } } ``` 通过以上步骤,你就可以成功下载并使用org.apache.hive.jdbc.HiveDriver来连接和操作Hive服务器。记得根据自己的具体环境和需求进行配置和使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值