大数据-Hive学习从这里开始 - 大数据技术参考_大数据技术文献_大数据趋势分析 -
当前位置:技术分享 > 技术参考 > 正文

大数据-Hive学习从这里开始2018-04-20 14:54:30 | 编辑:hely | 查看: | 评论:0

Hive是基于Hadoop HDFS分布式文件系统的分布式数据仓库架构。它为数据仓库的管理提供了许多功能:数据ETL(抽取、转换和加载)工具,数据存储管理和大型数据集的查询和分析能力。

Hive是基于Hadoop HDFS分布式文件系统的分布式数据仓库架构。它为数据仓库的管理提供了许多功能:数据ETL(抽取、转换和加载)工具,数据存储管理和大型数据集的查询和分析能力。同时Hive还定义了类SQL的语言(HiveQL)。允许用户进行和SQL相似的操作,它可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL查询功能。还允许开发人员方便的使用Mapper和Reducer操作,可以将SQL语句转换为MapReduce任务运行。

 

 

Hive体系架构

 

 

用户接口,包括CLI,JDBC/ODBC,WebUI

元数据存储,通常存储在关系数据库如mysql,derby中。元数据包括表的名字,表的列和区分及其属性,表的属性(是否为外部表等),表的数据所在目录

底层驱动:解释器、编译器、优化器、执行器。HiveQL查询语句从词法分析。语法分析,编译,优化以及查询计划生成。生成的查询计划存储在HDFS中,并在后面的MapReduce中进行调用执行

Hadoop:使用HDFS进行存储,利用MapReduce进行计算

Hive与关系数据库的区别

存储文件的系统不同,Hive使用Hadoop的分布式文件系统,关系数据库则是服务器本地的文件系统

计算模型不同,Hive使用MapReduce进行计算,关系数据则是自己设计的计算模型

实时性区别,关系数据库都是为实时查询的业务进行设计的,而Hive则是为海量数据做数据挖掘设计的,实时性很差

扩展能力区别,Hive很容易扩展自己的存储能力和计算能力(继承Hadoop),而关系数据库在这方面要差很多

Hive的基本特性

通过类SQL查询语言进行分析大数据,避免了开发MapReduce程序,这样使得分析数据更容易

数据是存储在HDFS上的,Hive本身并不提供数据的存储功能

Hive是将数据映射成数据库和表,库和表的元数据信息一般存在关系数据库上(Mysql)

存储很大的数据集,并且对数据完整性、格式要求不严格

不适用于实时计算和响应,常用于离线分析

Hive中的基本数据类型

基本数据类型

Hive支持关系数据库中大多数据基本数据类型,同时也支持三种复杂类型。

 

 

复杂数据类型

 

array

 

Hive表

创建表

 

 

Hive表类型

内部表

Hive中默认创建的是内部表,每张内部表在HDFS都有相应的目录来存储表数据,默认实在/user/hive/warehouse目录中创建。如果删除了内部表,那么这个表的数据和元数据都将被删除。

 

外部表

 

Hive中外部表和内部表很类似,但是数据不是放在默认的目录中(如果不指定目录,数据还是存储在默认的目录中)。Hive可以创建外部表和HDFS,HBase,Elasticsearch等进行整合。删除外部表时,只会删除元数据,不会删除真实数据。

 

分区表

 

Hive表的数据是存储在HFDS中对应的目录中,普通表的数据直接存储在这个目录下,而分区表存储时,会再划分子目录来存储,一个分区一个子目录。主要作用是来优化查询性能。在Hive表查询的时候,如果指定了分区字段作为筛选条件,那么只需要到对应的分区目录下去检索数据即可,减少了处理的数据量,从而有效的提高了效率。在对分区表进行查询时,尽量使用分区字段作为筛选条件

 

桶表

 

分桶是将数据分解成更容易管理的若干部分的技术,桶表示对数据源数据文件本身来拆分数据。桶表会将源数据文件按照一定规律拆分成多个文件。创建桶表时,需要制定桶的个数,分桶的依据字段,Hive就可以自动将数据分桶存储。查询时,只需要遍历一个桶里的数据,或者遍历部分桶,这样就提高了查询效率。

 

数据导入导出

 

数据导入

 

 

数据导出

 



上一篇:hadoop+Spark+hbase集群动态增加节点 大数据-Hadoop小文件问题解决方案下一篇:

公众平台

搜索"raincent"或扫描下面的二维码