Hive总结

Hive的介绍:Hive本质是一个翻译器,就是将Hql语句翻译成MapReduce,通过执行MapReduce来对海量数据仓库进行处理,表面上就是一个数据仓库能够查询与分析数据。
与传统的数据库比较,Hive的主要特点:1.分析离线存储数据,不具有实时性2.不支持事务,由于是历史数据没有必要去增删改3.不支持修改4.有很多数据的冗余保障了系统的健壮性。
Hive的5条重要结论:1.Hive中的数据库就是底层HDFS中的一个【库名.db】文件夹
2.Hive中的表就是底层HDFS中的库名文件夹下以表名为名字的文件夹
3.Hive中的数据就是HDFS中Hive表对应的文件夹下的文件
4.Hive中的Hql语句会转化为底层的MR来执行
5.Hive中默认的数据库对应的就是HDFS中/user/hive/warehouse目录
Hive的元数据库:存储着Hive的元数据信息具体就是库,表,列等数据之间的关系的描述,默认存放在derby数据库中。Derby数据库是一个单用户数据库,每当在一个新文件夹下启动Hive的时候就会新建一个新的存储元数据的文件夹出来,造成了很大的不便。所以我们一般使用mysql来存储元数据信息。
Hive元数据库中重要的表:
DBS:存储了Hive中库相关的信息,包括库编号、库名称、库所有者、库对应在HDFS中的存储位置
TBLS:存储了Hive中表相关的信息,包括表的编号、所属库的编号、表所有者、表名称、表类型
COLUMNS_V2:存储了Hive表中对应列的信息
SDS:存储Hive表中对应在HDFS中的存储位置,包括表的编号,存储位置
Hive中的内部表和外部表:内部表就是通过Hive直接创建一个表这时HDFS中也就会相应的创建一个文件,它是先有的表后有的数据,删除内部表,内部表删除元数据,对应的HDFS中表对应的文件夹和其中的数据也会被删除。外部表就是在真实开发中,很可能HDFS中已经有了数据,希望通过Hive直接使用这些数据作为表的内容,可以创建表关联这些数据,这种表就是外部表。先有数据后有表。外部表删除时只会删除元数据,HDFS中的数据不会删除。
创建外部表:create external table teacher (id int,name string) row format delimited fields terminated by ‘|’ location ‘/teacher’;
Hive中的分区表:Hive分区表的出现是为了提高查询效率,它的思想与mysql中的BTree索引很像,如果我们要查询分区内的数据我们提前就可以过滤很大一大批数据。由全表遍历变为选择性遍历。分区表就是在表对应的文件夹下再建立对应的字文件夹,在子文件夹下存放真实数据。
Hive中的分桶表:是一种更细粒度的数据分配方式,主要实现数据的抽样,方便进行数据测试。通过hash分桶算法将数据放在不同的桶中。分桶过程是在底层的MR中实现的。
Hive的函数:拥有内置函数,也可以自定义函数UDF. Hive还可以使用JDBC来连接
 创建一个普通的java文件,导入hive相关的包
 写一个类继承UDF
 在类中编写一个公有的方法,方法名必须为evaluate,返回值和参数列表任意。
 将写好的工程打jar包,上传到linux中
 在hive中注册jar add jar /路径;
 注册自定义函数 create temporary function 名字 as ‘所在的包.类名’;
 调用临时函数 select 名字()


hive语法
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值