hive基础

hive是基于hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,提供简单的sql查询功能,可以将sql语句转换为mapreduce任务进行运行

Metastore(hive 元数据)

hive将元数据存储在数据库中,比如mysql,derby,hive中的元数据包括表的名称,表的列和分区及其属性,表的数据所在的目录

hive将数据存储在hdfs,大部分的查询,计算由mapreduce来完成

hive数据仓库与数据库的异同

1)由于hive采用了sql的查询语言hql,因此很容易将hive理解为数据库,其实从结构上来看,hive和数据库除了拥有类似的查询语言,再无类似之处

2)数据存储的位置

3)数据格式

4)数据更新,hive读多写少 ,hive中不支持对数据的改写和添加,所有的额数据都是在加载的时候中确定好的

不支持使用update修改数据

hdfs一次写入多次读写

5)执行 .hive通过mapreduce来实现,而数据库通常有自己的执行引擎

6)执行延迟,由于没有索引,需要扫描整个表,因此延迟较高,另外一个导致延迟高的因素是mapreduce框架

7)可扩展性

8)数据规模

hive几种基本表类型:内部表,外部表,分区表,桶表

创建表

外部表创建表的时候,不会移动数据到数据仓库目录中(/user/hive/warehouse),只会记录表数据存放的路径

内部表会把数据复制或剪切到表的目录下

删除表

外部表在删除表的时候只会删除表的元数据信息,不会删除表数据

内部表删除时会将元数据信息和表数据同时删除

几种导出数据的方式

1 insert overwrite ...导出到本地目录 insert overwrite lcoal directory '/home/...'  select * from..

2 insert overwrite ...导出到hdfs目录 insert overwrite directory '/home/...' select * from..

3 hive -e 'Hql query' >> test         bin/hive -e 'select * from db01.student' >> test.txt

4)sqoop

三种分组的区别

row_number 不管col2字段的值是否相等,行号一致递增,比如:有两条记录的值相等,但一个是第一,一个是第二

rank 上下两条记录的col2相等时,记录的行号是一样的,但下一个col2值得行号递增N(N是重复次数),比如:两条并列第一,下一个是第三,没有第二

dense_rank 上下两条记录的col2相等时,下一个col2值得行号递增1,比如:有两条并列第一,下一个是第二

原文地址:https://www.cnblogs.com/fengyouheng/p/15416693.html