一,定义
hive 是一种底层封装了Hadoop 的数据仓库处理工具
二,介绍
hive是基于Hadoop构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop中的数据:可以将结构化的数据文件映射为一张数据库表,并提供完整的SQL查询功能;可以将SQL语句转换为MapReduce任务运行,通过自己的SQL查询分析需要的内容,这套SQL简称Hive SQL,使不熟悉mapreduce的用户可以很方便地利用SQL语言查询、汇总和分析数据。而mapreduce开发人员可以把自己写的mapper和reducer作为插件来支持hive做更复杂的数据分析。它与关系型数据库的SQL略有不同,但支持了绝大多数的语句如DDL、DML以及常见的聚合函数、连接查询、条件查询。它还提供了一系列的工具进行数据提取转化加载,用来存储、查询和分析存储在Hadoop中的大规模数据集,并支持自定义的UDF、UDAF和UDTF,也可以实现对map和reduce函数的定制,为数据操作提供了良好的伸缩性和可扩展性
三,Hive的使用场景
hive 构建在基于静态批处理的Hadoop 之上,Hadoop 通常都有较高的延迟并且在作业提交和调度的时候需要大量的开销。因此,hive 并不能够在大规模数据集上实现低延迟快速的查询,例如,hive 在几百MB 的数据集上执行查询一般有分钟级的时间延迟。
因此,hive 并不适合那些需要高实时性的应用,hive 将用户的hiveSQL 语句通过解释器转换为MapReduce 作业提交到Hadoop 集群上,Hadoop 监控作业执行过程,然后返回作业执行结果给用户。hive 并非为联机事务处理而设计,hive 并不提供实时的查询和基于行级的数据更新操作。hive 的最佳使用场合是大数据集的批处理作业,例如,网络日志分析。
四,架构图
五,各组件的作用
(1)client接口;shell命令行。
(2)jdbc客户端;hive的Java实现。
(3)web接口;通过浏览器访问hive。
(4)元数据库;hive将元数据存储在数据库中(一般是MySql),元数据包括表的名字,列,分区和属性等。
(5)解释器:解释器的作用是将 HiveSQL 语句转换为抽象语法树(AST)。
(6)编译器:编译器是将语法树编译为逻辑执行计划。
(7)优化器:优化器是对逻辑执行计划进行优化。
(8)执行器:执行器是调用底层的运行框架执行逻辑执行计划。(9)mapreduce;hive使用的计算框架。
(10)hdfs;表数据存储的地方。
六,hive常见数据类型
1,整数类型
int,integer,bigint
2,浮点型
float,double,decimal
3,时间类型
timestamp,date,datetime
4,字符串类型
string,varchar,char
5,misc类型
boolean
6,集合类型
array<STRING>,map<STRING,STRING>
七,建表语句
注意事项;
1,蓝色字体是建表语法的关键字,用于指定某些功能。
2,【】中括号的语法表示可选可不选。
3,|表示使用的时候,左右语法二选一。
4,建表语句中的语法顺序要和语法树中顺序保持一致。
翻译;
EXTERNAL;表示创建一个外部表
COMMENT;表示表的注释信息
PARTITIONED BY;分区
CLUSTERED BY;分桶
STORED AS file_format;文件的类型
LOCATION;表数据存储地址(hdfs的地址)