基于Hive的离线数据处理方法

2022-03-13 23:14亢华爱
现代商贸工业 2022年5期

亢华爱

摘 要:Hive是一种建立在Hadoop上的数据仓库基础构架。Hive系统结构中的解析器,可以将用户编写的HiveQL语句进行解析,解析出相应的MapReduce程序,本文使用Hive对某网站用户评论数据进行分析,快速实现MapReduce统计任务。

关键词:Hive;HQL;MapReduce

中图分类号:TB 文献标识码:A doi:10.19311/j.cnki.1672-3198.2022.05.077

1 Hive的概述

Hive起源于Facebook,Facebook公司有着大量的日志数据,面对这样海量的结构化数据, Facebook开发团队想到设计一种使用SQL语言就能够对日志数据查询分析的工具,这样只需要懂SQL语言,就能够胜任大数据分析方面的工作,大大节省开发人员的学习成本,Hive就这样应运而生了。Hive 是Hadoop生态系统中的一个数据仓库技术。大量数据存储在HDFS中,Hive能夠将这些的数据进行数据加载、提取和转换。

在Hadoop生态系统结构中,Hive这个数据仓库技术占有非常重要的地位,Hive能够将一个个结构化的数据文件映射为一张张数据库表。Hive完成的映射关系包括,SQL中的表、字段映射为HDFS中的目录、文件。Hive实现这种映射依靠的是Hive解析器,Hive解析器能够将用户的SQl语句解析成相应的MapReduce程序。总之,Hive借助Hadoop的MapReduce程序完成计算;借助Hadoop的HDFS进行数据存储;依靠MySql进行元数据的存储。

Hive具有完整的SQL查询功能,用户可以使用类似SQL的语言进行数据查询,对于熟悉MapReduce的程序员,也可以开发用户自定义的mapper程序和 reducer程序来处理复杂的分析工作。虽然Hive具有类SQL的查询语句HQL,能够完成数据查询功能,但从体系结构、功能等方面来看,它都不是数据库。

使用Hive的过程中,用户只需要熟悉SQL语言就可以完成大数据分析工作,这样就可以让一些不擅长基于Java的开发,编程基础一般,不熟悉MapReduce开发的用户,能够在HDFS大规模数据集上利用SQL语言进行查询、汇总、分析数据。

1 Hive的优点及系统架构

Hive使用广泛,它具有如下优点。

(1) Hive支持标准的SQL语法,省去了用户编写MapReduce程序的过程,完成相同的业务逻辑Hive只需要写短短几行Sql命令就可以完成需要的功能,大大减少了公司的开发成本。

(2)由于Hive的操作接口采用了类似于SQL的语法,这样就提供了快速开发的便利,容易学习、容易使用。避免去编写大量的MapReduce程序,减小开发人员的时间和学习成本。

(3)Hive是为大数据批量处理而生的,Hive的出现也解决传统的关系型数据库在大数据处理上的瓶颈。

Hive的优势和它的系统架构是分不开的,hive的体系结构包括:

(1)用户接口:用户接口包括shell终端命令行;JDBC/ODBC ;WebUI。

(2)Hive解析器:Hive解析器的核心功能就是根据用户编写的Sql语法匹配出相应的MapReduce模板,形成对应的MapReduce job进行执行。

(3)Hive元数据库(MetaStore):Hive将表中的元数据信息存储在数据库中, Hive中的元数据信息包括表的名字、表的列和分区、表的属性、表的数据所在的目录等。实际工作中配置中使用Mysql存储元数据信息。Hive中的解析器在运行的时候会读取元数据库MetaStore中的相关信息。

(4)Hadoop:Hive这个数据仓库的数据是存储在Hadoop的HDFS中,业务实际分析计算是利用Hadoop的MapReduce完成的。

2 HQL基本应用

Hive定义了一套自己的SQL,简称HQL,它与关系型数据库的SQL略有不同,但支持了绝大多数的语句如:DDL、DML以及常见的聚合函数、连接查询、条件查询。

(1)DDL操作(数据定义语言)包括:Create、Alter、Show、Drop等。

create database-创建新数据库

alter database -修改数据库

drop database -删除数据库

create table -创建新表

alter table -变更(改变)数据库表

drop table -删除表

create index -创建索引(搜索键)

drop index -删除索引

show table -查看表

(2)DML操作(数据操作语言)包括:Load 、Insert、Update、Delete、Merge。

load data -加载数据,包括insert into - 插入数据和insert overwrite - 覆盖数据

update table -更新表

delete from table where id = 1;表示删除表中ID等于1的数据(delete在Hive 0.14开始可用,并且只能在支持ACID的表上执行)。

merge合并语句(MERGE在Hive 2.2开始可用,并且只能在支持ACID的表上执行)。

3 基于Hive完成离线数据分析

我们分析的数据来源是某商品的用户评论数据,该数据以文件的形式存储在hdfs中,启动Hadoop和Hive之后,在Hive中创建一个数据库和数据表,将清洗后的数据文件导入该表中,用户只需要依据实际的业务需要编写HQL语句,接下来Hive框架会把HQL语句解析成相应的MapReduce程序,借助MapReduce计算框架运行job,便可以获得期望的分析结果。

具体操作过程如下:

(1)在hive中创建commentdata数据仓库,并切换到commentdata下。

create database commentdata;

use commentdata;

(2)在hive中创建一张表,用于存放清洗后的数据,表名为comment,Hive创建comment内部表的语句如下:

create table comment(

productid string,

commentcount int,

goodcount int,

generalcount int,

poorcount int,

goodrateshow float,

generalrateshow float,

poorrateshow float,

guid string,

content string,

creationtime string,

score int,

nickname string,

userlevelname string,

userclientshow string,

ismobile string,

days int

)row format delimited fields terminated by \\t';

(3)表設计好以后,在Hive端使用load命令,将清洗后的数据文件part-r-00000导入Hive表中。

(4)编写HQL语句,分析用户使用移动端购买还是PC端购买,及移动端和PC端的用户比例。

(5)编写HQL语句,分析用户评论周期,分析收到货后,用户一般多久进行评论。

(6)编写HQL语句,分析会员级别,用来判断购买此商品的用户级别。

4 结论

Hive核心功能是一个SQL解析引擎,能够将用户编写的SQL语句转化为对应的MapReduce程序,Hive本身并不存储和计算数据,它依赖Hadoop的HDFS完成大数据的存储,依赖MapReduce进行计算,并且借助MySql来存储元数据。

参考文献

[1]林子雨.大数据技术原理与应用[M].北京:人民邮电出版社,2017.

[2]蒋焕亮.基于Hive的日志仓库构建研究[J].计算机时代,2016,(11).

[3]王康,陈海光,李东静,等.基于Hive的性能优化研究[J].上海师范大学学报,2017,(8).

3003500338205