Apache Hive是基于Hadoop的一种数据仓库工具,可以提供类似于SQL的查询语言——HiveQL,用来从存储在分布式存储系统中的大规模数据集合中检索和分析数据。它支持多种文件格式和访问协议,并能够与其他Apache Hadoop组件完美配合使用。Hive旨在将SQL用户和MapReduce程序员带入到一个单一系统中以处理超大型数据集,并将复杂的编程任务简化为类似SQL的声明性查询语言。该结构简化了原始查询得转换成运行实际Mapper / Reducer作业所需代码量并自动执行这些作业。
首先需要在本地或者集群上安装 Hadoop 和 Hive 。确保环境变量设置正确并且能够正常运行。
通过hive命令行进入hive,创建一张基础表。例如:有如下记录:姓名,考试科目和考试成绩; 首先 type hive 进去之后输入以下代码 snippet 来建立与赋值:
CREATE TABLE student_exam_marks(name STRING, subject STRING, marks INT)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
STORED AS TEXTFILE;
INSERT INTO TABLE student_exam_marks
VALUES ('John', 'Maths', 80),
('Michael', 'Science', 85),
('Smith', 'Maths' ,75),
('Andrew', 'Science' ,90);
这就创建了一张名为“student_exam_marks”的表,并往里面插入了四条数据。
现在已经成功创建了一张测试表,您可以使用 SQL 查询它。
例如,在 Hive 中查找平均数、总分数、最高分数以及课程 Science 的所有学生的名称,执行以下命令:
SELECT AVG(marks), SUM(marks), MAX(marks), name
FROM student_exam_marks
WHERE subject = 'Science'
GROUP BY name;
这将列出所有属于 Science 的学生的平均分、总分和最高分,以及每个学生的名称。可以像使用标准 SQL 一样编写 HiveQL 查询。
本教程介绍了在 Hadoop 上运行 Hive 并建立基础表格与数据插入,并且简述了如何查询该表格中的数据。
Hive 支持多种存储格式,允许较少工作量下适应不同类型的数据源(JSON, Parquet 等)。此外还提供了灵活配置框架、统计信息集成等强大特性。
对于开发人员,熟悉类似SQL这样更为熟悉的语言可能使调试与查找错误更加容易。