什么是Hive
Hive是建立在Hadoop文件系统上的数据仓库,它提供了一系列工具,能够对存储在HDFS中的数据进行数据提取、转换和加载(ETL),这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的工具。
Hive定义了简单的类SQL查询语言,称为HQL,它可以将结构化的数据文件映射为一张数据表,允许熟悉 SQL 的用户查询数据,也允许熟悉 MapReduce 的开发者开发自定义的 mapper和 reducer来处理内建的 mapper 和 reducer 无法完成的复杂的分析工作,相对于Java代码编写的MapReduce来说,Hive的优势更加明显。
由于Hive采用了SQL的查询语言HQL,因此很容易将Hive理解为数据库。其实从结构上来看,Hive和数据库除了拥有类似的查询语言,再无类似之处。接下来,我们以传统数据库MySQL和Hive的对比为例,通过他们的对比来帮助大家理解Hive的特性,具体如表1所示。
表1 Hive与传统数据库对比
对比项 | Hive | MySQL |
---|---|---|
查询语言 | Hive QL | SQL |
数据存储位置 | HDFS | 块设备、本地文件系统 |
数据格式 | 用户定义 | 系统决定 |
数据更新 | 不支持 | 支持 |
事务 | 不支持 | 支持 |
执行延迟 | 高 | 低 |
可扩展性 | 高 | 低 |
数据规模 | 大 | 小 |
多表插入 | 支持 | 不支持 |