hive

数据仓库Hive入门

2022-11-09  本文已影响0人  文景大大

一、什么是数据仓库

数据仓库(Data Warehouse,DW),是一种用于存储、分析和报告的数据系统,其目的是构建面向分析的集成化数据环境,其本身不产生数据,也不消费数据。

二、什么是Hive

Hive是建立在Hadoop之上的开源数据仓库系统,可以将存储在HDFS中的结构化、半结构化数据文件映射为一张数据库表,并基于表提供一种类SQL查询模型(HQL),用于用户访问和分析存储在HDFS中的大型数据集。其本质就是将HQL转换为MapReduce程序,然后提交给Hadoop集群执行。

三、为什么要使用Hive

不适用Hive也是可以的,但是会面临如下的问题:

而使用Hive的好处则是:

所以Hive的最大优势就是可以让用户专注于编写HQL,而无需操心Hadoop底层的存储和计算过程,大大解放了用户的时间和脑力。

四、Hive是如何工作的

Hive主要包含如下几部分的组件:

Hive架构示意图

五、如何使用Hive

在使用Hive之前,我们需要拥有一个健康运行的Hadoop集群,然后在其上安装MySQL和Hive,这部分内容网上有很多教程,此处不做赘述了。

和关系型数据库一样,Hive拥有CLI命令行客户端,但是一般开发人员不会这么使用,都有更好的图形化工具使用,比如DataGrip、Dbeaver等,更加友好也能大大提升HQL编写的效率。

5.1 DDL语句

一、建表

-- 创建数据库,对应HDFS存储路径为/user/hive/warehouse/zhangxun.db
create database if not exists zhangxun comment "zhangxun test database";
-- 切换数据库
use zhangxun;
-- 创建数据表,对应HDFS存储路径为/user/hive/warehouse/zhangxun.db/t_user_info
create table t_user_info(
    id int comment "ID",
    name string comment "用户姓名",
    gender int comment "性别:0-男,1-女",
    age int comment "年龄"
) comment "用户信息表"
-- 指定文件中字段之间的分隔符
row format delimited fields terminated by ",";
-- 导入数据操作(在hadoop集群的命令行里面操作上传)
-- hadoop fs -put user-info.txt /user/hive/warehouse/zhangxun.db/t_user_info
-- 查询数据
select * from t_user_info;

如下是自己准备的用户信息文件user-info.txt

1,张三,0,22
2,lisa,1,21
3,jerry,0,28
4,jack,0,32
5,micky,1,29

二、导数

如上导入数据我们是使用的hdfs命令,Hive不推荐我们这么做,使用Hive的Load命令也可以实现数据的导入:

-- 创建数据表,对应HDFS存储路径为/user/hive/warehouse/zhangxun.db/t_car_info
create table t_car_info(
    id int comment "ID",
    brand string comment "汽车品牌",
    year int comment "年份"
) comment "汽车信息表"
row format delimited fields terminated by ",";
-- 从HiveServer2所安装的服务器的路径上传到HDFS的/user/hive/warehouse/zhangxun.db/t_car_info下面
load data local inpath '/root/data/car-info.txt' into table t_car_info;
-- 查询数据
select * from t_car_info;

5.2 DML语句

一、插入数据

在上面我们提到Hive作为数据仓库具有“非易变性”,也就是说通常很少有场景会要去对已存的数据进行修改和插入,所以通常插入数据的场景多见于数据清洗和转换的需要。比如:

我们使用:

-- 先创建目标表
create table t_target_user(id int,age int);
-- 将原始表中的数据清洗后存入目标表(假设没有name值的用户信息是无效的)
insert into table t_target_user select id,age from t_user_info where name is not null;

或者更简单的:

-- 无需提前创建目标表
create table t_target_user as select id,age from t_user_info where name is not null;

二、查询数据

三、关联数据

四、常用函数

-- 查看所有可用的函数
show functions;
-- 查看某个具体函数的使用方法
describe funciton extended funciton_name;

五、自定义函数

更多关于函数的内容可以参考LanguageManual UDF - Apache Hive - Apache Software Foundation

总结下来,大体的使用方式和SQL语法一致,更多内容可以参考Home - Apache Hive - Apache Software Foundation

上一篇下一篇

猜你喜欢

热点阅读