Hive

来源:互联网 发布:kettle java代码 编辑:程序博客网 时间:2024/06/11 23:56

1.Hive简介

Hive是一个基于Hadoop文件系统上的数据仓库架构,它为数据仓库的管理提供了许多功能:数据ETL工具、数据存储管理和大型数据集的查询与分析能力。Hiverson定义了类SQL的语言--Hive QL,Hive QL允许用户进行和SQL类似的操作。

Hive适用于处理不变的大规模数据集(例如网络日志)上的批量任务,不提供数据数据排序和查询cache功能,也不提供在线事务处理、实时的查询以及记录集的更新。Hive最大的价值是可扩展性(基于Hadoop平台,可以自动适应机器数目和数据量的动态变化)、可延展性(结合MapReduce和用户定义的函数库),并且拥有良好的容错性和低约束的数据输入格式。

Hive本身建立在Hadoop的体系架构上,提供了一个SQL解析过程,并从外部接口中获取命令,以对用户指令进行解析。Hiverson可将外部命令解析成一个MapReduce可执行计划,并按照该计划生成MapReduce任务后交给Hadoop集群处理。


2.Hive的数据存储

Hive的存储是建立在Hadoop文件系统之上的,Hive本身没有专门的数据存储格式,也不能为数据建立索引,用户可以非常自由的组织Hive中的表,只需要子创建表的时候告诉Hive数据中的列分隔符和行分隔符就可以解析数据了。

Hive中主要包含四种数据类型:表(Table)、外部表(External Table)、分区(Partition)和桶(Bucket)。

Hive中的表和数据库中的表在概念上是类似的,每个表在Hive中都有一个对应的存储目录。例如,一个表table在HDFS中的路径为/datawarehouse/htable,其中datawarehouse是hive-site.xml配置文件中由${hive:metastore.warehouse.dir}指定的数据仓库的目录,所有的表数据(除了外部表)都保存在这个目录中。