HIVE的定义,HIVE是什么?

一、我们看下官网(https://cwiki.apache.org/confluence/display/Hive/Home)的定义:

The Apache Hive™ data warehouse software facilitates reading, writing, and managing large datasets residing in distributed storage and queried using SQL syntax. 

Built on top of Apache Hadoop™, Hive provides the following features:

1、Tools to enable easy access to data via SQL, thus enabling data warehousing tasks such as extract/transform/load (ETL), reporting, and data analysis.
2、A mechanism to impose structure on a variety of data formats
3、Access to files stored either directly in Apache HDFS™ or in other data storage systems such as Apache HBase™ 
4、Query execution via Apache Tez™, Apache Spark™, or MapReduce
5、Procedural language with HPL-SQL
6、Sub-second query retrieval via Hive LLAP, Apache YARN and Apache Slider.

翻译结果为:

        Apache Hive™数据仓库软件便于读取、写入和管理存储在分布式存储中的大型数据集,并使用SQL语法进行查询。
Hive 构建于Apache Hadoop™之上,提供以下功能:
1、用于通过SQL轻松访问数据的工具,从而支持数据仓库任务,如提取/转换/加载(ETL)、报告和数据分析。
2、一种在各种数据格式上强加结构的机制。
3、访问直接存储在Apache HDFS ™或其他数据存储系统(如Apache HBase ™)中的文件 。
4、通过Apache Tez ™,Apache Spark ™或 MapReduce执行查询。
5、使用HPL-SQL的过程语言。
6、通过Hive LLAP,Apache YARN和Apache Slider进行亚秒级查询检索。

从上面的定义我们可以初步了解:

       Hive是一种建立在Hadoop文件系统上的数据仓库架构,并对存储在HDFS中的数据进行分析和管理,Hive是通过一种类似SQL的查询语言(称为HiveSQL,简称为HQL)分析和管理数据,对于熟悉SQL的用户可以直接利用Hive来查询数据。同时,这个语言也允许熟悉 MapReduce 开发者们开发自定义的mappers和reducers来处理内建的mappers和reducers无法完成的复杂的分析工作。Hive可以允许用户编写自己定义的函数UDF来查询数据。Hive中有3种UDF:User Defined Functions(UDF)用户定义的函数、User Defined Aggregation Functions(UDAF)用户定义的聚合、User Defined Table Generating Functions(UDTF)用户定义的表函数。

二、Hive和传统的关系型数据库的区别:

  Hive将外部的任务解析成一个MapReduce可执行计划,而启动MapReduce是一个高延迟的一件事,每次提交任务和执行任务都需要消耗很多时间,这也就决定Hive只能处理一些高延迟的应用(如果你想处理低延迟的应用,可以考虑一下Hbase)。
  在传统的关系数据库中,表的模式是在数据加载的时候强行确定好的。如果在加载时发现数据不符合模式,则拒绝加载这些数据。而Hive在加载的过程中不对数据进行任何的验证操作,其只是简单的将数据复制或者移动到表对应的目录下面。从这方面来说,传统数据库在数据加载的过程中比Hive要慢。但是因为传统数据库在数据加载过程中可以进行一些处理,比如对某一列建立索引等,这样可以提升数据的查询性能。而在这方面Hive不行。
  我们都知道,数据库的事务、索引以及更新都是传统数据库的重要特性。但是Hive目前还不支持事务;不能对表数据进行修改(不能更新、删除、插入;只能通过文件追加数据、重新导入数据);不能对列建立索引(但Hive支持索引的建立,但是不能提高Hive的查询速度。如果你想提高Hive的查询速度,需要学习Hive的分区、桶的应用)。
下表列出了RMDB和Hive的比较:

比较项 SQL HiveQL
ANSI SQL 支持 不完全支持
更新 UPDATE\INSERT\DELETE insert OVERWRITE\INTO TABLE
事务 支持 不支持
模式 写模式 读模式
数据保存 块设备、本地文件系统 HDFS
延时
多表插入 不支持 支持
子查询 完全支持 只能用在From子句中
视图 Updatable Read-only
可扩展性
数据规模
.... ...... ......

 

你可能感兴趣的:(HIVE,大数据,蓝星部队的博客)