为缩短MapReduce作业的开发周期(编辑/编译/提交),完全摒弃这一过程,加速从分析数据到生成结果的过程,Hive使用MapReduce对存储于HDFS上的数据进行分析,且定义了一种类SQL查询语言(HiveQL)。它使用HiveQL语句表述查询操作,并立该将其自动转化成一个或多个MapReduce作业,然后执行这些MapReduce程序并将结果反馈给用户。这样就明显拓宽了Hadoop和MapReduce的使用人群。
安装并设置Hive
Hive以客户端应用程序的形式运行,只要主机安装了Hadoop、设置HADOOP_HOME及PATH,并执行下面命令,让用户组对路径具有写入权限
$ hdfs dfs -mkdir /tmp
$ hdfs dfs -mkdir /user/hive/warehouse
$ hdfs dfs -chmod g+w /tmp
$ hdfs dfs -chmod g+w /user/hive/warehouse
默认情况下,Hive会把执行查询语句产生的临时数据和输出数据写入/tmp目录,在/user/hive/warehouse中存储写入hive表中的数据。
创建Hive表并导入数据
HiveQL对关键词、列名和表名中的字符不区分大小写。在数据导入数据之前常进行预处理,如编写MapReduce作业去掉无效数据和标准化字段。
$ hive> CREATE TABLE ufodata(sighted STRING,reported STRING,sighting_location STRING,shape STRING,duration STRING,
description STRING COMMENT 'some text description') COMMENT 'The UFO data set.';
$ hive> show tables '*data'
$ hive> describe ufodata
$ hive> describe extended ufodata
默认情况下,输入格式被指定为TextInputFormat,且假设插入表中的所有HDFS文件都以文本文件的形式存在。新建commands.hql,内容为
DROP TAB