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.txtdepartment.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的基本操作和功能

高级操作请看第二章