Hive总结

1.Hive的原理

hive是基于Hadoop的数据仓库工具。Hive就是在hadoop的基础上搭建了一层操作sql的接口,让我们可以使用hql来操作hive,由hive将这些hql翻译成mapreduce来处理数据,所以hive的底层仍然是mapreduce

2.Hive的内部表与外部表

内部表的概念:现在hive中建立一张表,然后向这个表添加数据,这样的表就叫内部表
外部表的概念:HDFS中已经有数据了,通过hive创建一张表来管理这个文件的数据,这和表就叫外部表。注意hive外部表管理的是HDFS里的某一个目录下的文件数据。
删除表的话,内部表会把对应的目录节点删除,外部表不会删除hdfs的目录节点

创建内部表的语法:create table xx(id int,name string) row format DELIMITED FIELDS TEMINATED BY ‘\t’;
创建外部表的语法:create external table xx(id int,name string) row format DELMITED FIELDS TERINATED BY ‘\t’location ‘xxx’;

3.Hive的分区表

分区表的概念:对数据进行分区可以提高查询时的效率
普通表和分区表的区别:有大量数据增加时需要建分区表
创建分区表的语法:create table xx(id int,name string) partitioned by(category string) row format delimited fields terminated by ‘\t’
分区表加载数据语法:load data local path ‘/home/xx.txt’overwrite into table xx partition(category=’cn’);

4.Hive的分桶表

分桶表是一种更细粒度数据分配方式
分桶的主要作用是实现数据的抽样,方便进行数据测试
分桶的原理是根据指定的列的计算hash值模余分桶数量后将数据分开存放。方便数据抽样

语法:
创建带桶的table:
Create table teacher(class string,name string) clustered by (class) into 3 buckets row format delimited field

开启分桶机制:
Set hive.enforce.bucketing=true;

往表中插入数据:
Insert overwrite table teacher select * from temp;

查询:select * from teacher tablesample(bucket 1 out of 3 on class);
分桶语法:tablesample(bucket * out of y)
Y必须是table总bucket数的倍数或者因子。Hive根据y的大小,决定抽样的比例
X表示从哪个bucket开始抽取

5.Hive的UDF

Hive的自定义函数
实现步骤:
1.新建Java工具,导入hive相关包,导入hive相关的lib
2.创建类继承UDF
3.自己编写一个evaluate方法,返回值和参数任意
4.将写好的类打成jar包,上传到linux中
5.在hive命令行下,向hive注册UDF:add jar/xxx/xxx.jar
6.在hive命令下,为当前udf起一个名字:create temporary function fname as ’类的全路径名’
7.之后就可以在hql中使用该自定义函数。

6.Hive的元数据库

元数据库本质上是一个关系型数据库,元数据库存储着hive的元数据信息,具体就是指库,表,列等数据之间的描述。默认情况下hive的元数据存放在derby数据库中,这个数据库有以下信息:它是一个单用户的数据库,每当在一个新的文件夹下启动hive的时候就会新建一个存储元数据的文件夹出来,造成了很大的不便。
所有我们在实务中,一般使用mysql来存储hive的元数据信息。

元数据库中的一些重要的表:
DBS:存储了hive库相关的信息,包括库编号、库名称、以及库所对应的HDFS文件的存储位置。
TBLS:存储了hive表中相关的信息,表编号,所属库的编号、表名称、表所有者、表类型
总结:通过这些信息我们就可以把这些文件从逻辑上组织在一起就是我们最后看到的hive

7.Hive的特点

1.针对海量数据的高性能查询和分析系统
2.类sql的查询语句
3.Hiveql灵活的可扩展性
4.高扩展性和容错性
5.与hadoop其他产品完全兼容

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值