文章目录
1.什么是hive
hive是基于Hadoop的一个用于处理大数据的数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。
2.为什么要用hive
帮助我们更高效的完成数据分析,MapReduce代码烦杂开发效率低,有了Hive之后,hive使用类SQL的语法完成数据分析,大大提高编写MapReduce的效率·。
3.hive几种基本表类型
内部表、外部表、分区表、桶表
4.内部表(管理表)和外部表的区别
内部表(managed table):
(1) 也叫管理表,数据由hive自身管理,数据存储位置为 hive,metastore,warehouse.dir
(2) 对数据拥有完全的控制权限,删除表时存储在RDBMS上的元数据和存储在HDFS上的数据全部被删除。
(3) 默认创建的表是管理表(内部表)
外部表(external table):
(1) 数据由HDFS管理,数据的存储位置由自己制定。
(2) 删除表时之删除存储在RDBMS上的元数据,存储在HDFS上的数据不会被删除
(3) 需要用external关键字来创建外部表
(4) 外部表可以建立在已经存在的数据上而无需load
(5) 外部表不能使用truncate(清空),因为没有权限。
5.Hive数据仓库与数据库的异同
(1)查询语言不同:hive是hql语言,mysql是sql语言。
(2)数据存储位置不同:hive存储在HDFS上,mysql是存储在磁盘上。
(3)底层执行原理:hive底层是将hql语言转成map reduce,mysql是excutor执行器。
(4)数据延迟性:hive没有索引,所以查询慢,延迟性高,mysql有索引,查询快,延迟性低。
(5)数据规模:hive存储的数据量大,mysql之存储一些少量的业务数据。
(6)数据更新:hive只能读,不能写,mysql支持数据更新。