Hive是一种数据仓库,是用SQL语句来读写,管理存储在分布式系统上的数据集。
简单的理解就是:hive是一种将sql语句转换成MR作业的工具
举例:
在编写MR程序WordCount时,我们写了大量的代码,然后打成jar包,上传集群之后,在执行,最后才统计出各个单词出现的次数,其流程如下图所示:
1.png
这些操作在hive中只要一条分组统计语句就能完成:
select word,count(*) from words group by word;
使用之前需要创建表,并且将原始数据上传到指定的表中。
hadoop jar xxx.jar wordcount 输入文件 输出文件
在MR程序中,我们可以手动指定输入文件和输出结果的路径,在hive中,表中的数据就是输入文件,也就是存放在HDFS上的文件,输出结果通常也是保存在一张表中,当然也是在HDFS上,也可以把结果保存在本地文件系统上。
在hive中,库名,表名,分区名,在HDFS上都表现为带有层级关系的目录。这些路径通过关系型数据库实现元数据与数据的关联。
(关系型数据库中存放hive创建的库名,表名,分区名所指向的HDFS上的某个路径,而数据就是存储在这些路径之下)