Hive基本概念

1、什么是Hive?

基于Hadoop的数据仓库解决方案
将结构化的数据文件映射为数据库表
提供类sql的查询语言HQL(Hive Query Language)
Hive让更多的人使用Hadoop
为什么要使用Hive?
比如词频统计,mapreduce需要写一大堆代码,hive一条select就ok了;
由此可见,MapReduce执行效率更快,Hive开发效率更快。
所以,我们使用Hive是因为MapReduce太难用了。

2、Hive框架设计

基本构成(重要)
1、Hive将元数据存储在数据库中,如MySQL。Hive中的元数据包括表的名字、表的列和分区、表的属性、表的数据所在目录等一切描述数据的数据。
2、Hive的数据存储在HDFS中,大部分的查询、计算由MapReduce完成(但是包括* 的查询,比如select* from tabl不会生成MapReduce)。
3、解释HQL查询语句,生成查询计划存储在HDFS中,MapReduce调用执行。

3、Hive与Hadoop

Hive是一个工具,不用关心MapReduce逻辑,使用简单SQL语句完成查询。
Hive利用HDFS存储数据,利用MapReduce查询数据。

4、Hive数据类型(原始类型+复杂数据类型)

1、原始数据类型:类似于SQL数据类型
Hive基本概念_第1张图片

2、复杂数据类型
ARRAY:存储的数据为相同类型
MAP:具有相同类型的键值对
STRUCT:封装了一组字段,没有方法的对象
Hive基本概念_第2张图片

5、Hive存储数据类型

Hive中所有的数据都存储在HDFS中,可支持Text、SequenceFile、Parquet、RCFile、ORC等存储格式,只需要在创建表的时候告诉Hive数据中的列分隔符和行分隔符,Hive就可以解析数据。
Hive基本概念_第3张图片

1、database:数据库,表的集合,默认在warehouse目录下;
如何在hive环境中知道当前所在数据库?
①select current_database();
②set hive.cli.print.current.db=true;每次进hive都需要设置
③在配置文件中设置,永久。
2、table:数据表,分为内部表和外部表
内部表(管理表)
HDFS中为所属数据库目录下的子文件夹
数据完全由Hive管理,删除表(元数据)会删除数据
外部表(external tables)
数据保存在指定位置的HDFS路径中
Hive不完全管理数据,删除表(元数据)不会删除数据

你可能感兴趣的:(hive)