Hive数据库简介:
Hive是由Facebook开发的一款数据仓库工具,于2007年发布,并于2008年开源。随着时间的推移,Hive不断发展壮大,其发展史如下:
[1][Apache Hive] :2008年10月,Facebook宣布将Hive作为开源项目贡献给Apache软件基金会。
[2]:2010年,Hive正式获得Apache顶级项目的地位。
[3][https://www.jianshu.com/p/62f080374c29] :2012年,Hive 0.9版本发布,引入了Stinger计划,旨在通过引入Tez作为执行引擎和进行优化以提高性能。此时,Hive开始被广泛用于企业级数据仓库和商业智能应用。
[4]:2015年,Hive 1.0版本发布,进一步提高了性能、可扩展性和可管理性,包括了LLAP(Live Long and Process)。LLAP改变了传统的MapReduce计算模型,通过启用列式存储和交互式查询支持,提高了查询速度。
[5][你似乎来到了没有知识存在的荒原 - 知乎] :2019年,Hive 3.0版本发布,进一步优化了性能和安全性,引入ACID事务支持以及更好的动态分区支持。
[6][https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hive/HiveHistory.html] :2021年,Hive 4.0版本预计发布,将进一步改善查询性能、提高集群利用率和简化管理。
Hive是什么:
Hive是一个开源数据仓库工具,可以将SQL查询转换为MapReduce程序,从而在Hadoop集群上进行分布式处理。它可用于存储、管理和处理大规模结构化数据。
Hive基于Hadoop,使用Hadoop的文件系统(HDFS)进行数据存储。Hive的结构类似于传统的关系型数据库,包括数据库、表、列等元素。同时,Hive也提供了类似于SQL的查询语言,可以方便地进行数据查询与分析。
Hive基本操作:
数据库相关操作
创建数据库
CREATE DATABASE mydatabase;
查看所有数据库
SHOW DATABASES;
切换数据库
USE mydatabase;
删除数据库
DROP DATABASE mydatabase;
数据表相关操作
创建数据表
CREATE TABLE mytable (
id INT,
name STRING,
age INT
);
查看数据表结构
DESCRIBE mytable;
加载数据到数据表中
LOAD DATA INPATH '/path/to/data' INTO TABLE mytable;
查询数据表内容
SELECT * FROM mytable;
添加新字段
ALTER TABLE mytable ADD COLUMN gender STRING;
删除数据表
DROP TABLE mytable;
数据处理相关操作
数据筛选
SELECT * FROM mytable WHERE age > 20;
数据分组统计
SELECT age, COUNT(*) FROM mytable GROUP BY age;
数据排序
SELECT * FROM mytable ORDER BY age DESC;
数据连接
SELECT * FROM mytable JOIN anothertable ON mytable.id = anothertable.id;
Hive测试
为了测试Hive的性能和功能,我们可以使用一些自带的示例数据进行测试。比如,我们可以使用示例数据employee.txt
和department.txt
,这些数据位于Hive的安装目录下的examples/files
目录中。
首先,我们需要将数据加载到Hive中:
CREATE TABLE employee (
id INT,
name STRING,
age INT,
department INT
);
LOAD DATA LOCAL INPATH '/path/to/employee.txt' INTO TABLE employee;
CREATE TABLE department (
id INT,
name STRING
);
LOAD DATA LOCAL INPATH '/path/to/department.txt' INTO TABLE department;
然后,我们可以进行一些数据查询和分析操作:
-- 查看年龄大于30岁的雇员
SELECT * FROM employee WHERE age > 30;
-- 查看各部门的平均年龄
SELECT d.name AS department_name, AVG(e.age) AS avg_age
FROM employee e JOIN department d ON e.department = d.id
GROUP BY d.name;
通过这些简单的测试,我们可以初步了解Hive的基本操作和功能
高级操作请看第二章