学习目标 .了解数据分析,能够说出数据分析的常用方法; .掌握部署Hive,能够独立完成本地模式部署Hive的操作; .了解数据仓库的概念,能够说出数据仓库的特点; .熟悉数据仓库的设计,能够说出数据仓库分层的作用; .掌握数据仓库的构建,能够在Hive中构建数据仓库; .掌握分析招聘信息,能够灵活运用HiveQL 语句对大数据职位进行分析。 在当今数字化时代,数据已经成为企业和组织的宝贵资产。大数据的兴起为各行各 业带来了巨大的机遇和挑战。而数据分析作为从海量数据中提取有价值信息的关键过 程,在制定决策、发展业务和获得竞争优势方面发挥着重要作用。本章将详细介绍如何对 经过数据预处理的招聘信息进行数据分析。 5.数据分析概述 1 数据分析是对数据进行收集、处理、整理和解释的过程,其目标是从数据中提取有意 义的信息,帮助企业和组织更好地理解市场、客户、产品和业务,为正确决策提供支持。数 据分析的方法可以分为描述性分析、预测性分析、诊断性分析和推荐性分析,下面将介绍 这4种数据分析方法的概念。 1. 描述性分析 描述性分析是一种对数据进行汇总、展示和解释的方法,它可以帮助我们更好地理解 数据,发现数据的基本特征和分布规律。描述性分析主要依靠统计指标,例如平均值、中 位数、众数、累加值等,这些指标反映了数据的集中趋势和离散程度等。 2. 预测性分析 预测性分析是一种基于历史数据和数学模型,对未来可能发生的情况进行预测的方 法,它可以利用数据的规律,为决策提供参考,降低不确定性。预测性分析的常用方法有 回归分析、时间序列分析、分类分析、聚类分析、关联规则分析等。 3. 诊断性分析 诊断性分析是一种深入分析数据的方法,它可以发现数据中存在的问题,并从中提取 第5章 数据分析 81 有助于业务决策的见解。诊断性分析常用的方法包括假设检验、方差分析、因子分析、主 成分分析、决策树分析等。 4.推荐性分析 推荐性分析是一种根据数据分析的结果,给出改进建议的方法,它可以利用数据的价 值,指导行动的选择,从而提高效率。推荐性分析常用的方法有优化模型、评价模型、决策 模型、推荐系统等。 5.2 部署Hive 1.Hive的部署模式 在进行数据分析之前,须要先部署Hive。Hive支持三种部署模式:内嵌模式、本地 模式和远程模式,具体介绍如下。 (1)内嵌模式。 内嵌模式使用Hive内置的Derby数据库存储元数据。这是Hive最简单的部署模 式,适用于测试环境。然而,内嵌模式的缺点是元数据不共享,因此当一个客户端连接 Hive进行操作时,其他客户端无法基于相同的元数据操作Hive。 (2)本地模式。 本地模式将Hive默认的Derby数据库替换为关系数据库,如MySQL,以解决元数 据不共享的问题。但本地模式部署的Hive具有一定的局限性,因为用户只能在Hive部 署的服务器上连接Hive进行操作,无法在其他服务器上连接Hive。 (3)远程模式。 远程模式也使用关系数据库存储Hive的元数据,但可以解决本地模式部署的局限 性。换句话说,用户可以在任意服务器上远程连接Hive进行操作。Hive提供了两种服 务供用户实现远程连接,它们分别是MetaStore服务和HiveServer2服务。 2.Hive的部署过程 本项目不涉及远程连接Hive的相关操作。因此,我们将基于本地模式在虚拟机 Hadoop3上部署Hive,具体操作步骤如下。 (1)安装MySQL。 本项目采用在线安装MySQL的方式,在虚拟机Hadoop3中安装MySQL8.0版本, 具体操作步骤如下。 安装用于从网络上下载文件的工具wget,以便获取MySQL8.0版本的源配置文件。 在虚拟机上执行如下命令。 $yum -y install wget 使用wget工具下载MySQL8.0版本的源配置文件mysql80-community-release-el9- 1.noarch.rpm,该文件是一个RPM 包。在虚拟机的/export/software目录中执行如下 命令。 大数据项目实战(第82 2版) $wget http://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm 上述命令执行完成后,会自动将MySQL8.0版本的源配置文件下载到虚拟机的 /export/software目录中,如图5-1所示。 图5-1 下载MySQL8.0版本的源配置文件 在图5-1中,出现“已保存‘mysql80-community-release-el9-1.noarch.rpm’”的提示信 息,说明MySQL8.0版本的源配置文件下载成功。 使用yum 工具安装MySQL8.0版本的源配置文件,将MySQL8.0版本的软件包和 存储库添加到系统中。在虚拟机的/export/software目录中执行如下命令。 $yum -y install mysql80-community-release-el9-1.noarch.rpm 上述命令执行完成后,会自动安装MySQL8.0版本的源配置文件,如图5-2所示。 图5-2 安装MySQL8.0版本的源配置文件 在图5-2中,出现“已安装:mysql80-community-release-el9-1.noarch”的提示信息,说 明MySQL8.0版本的源配置文件已安装成功。 使用yum 工具安装MySQL。在虚拟机上执行如下命令。 第5章 数据分析 83 $yum -y install mysql-community-server 上述命令执行完成后,会自动安装MySQL,如图5-3所示。 图5-3 安装MySQL 在图5-3中,出现“已安装:mysql-community……”的提示信息,说明MySQL已安装成功。 如果出现GPG检验失败的错误信息,可以先执行yumupdate命令,更新系统中已安装的软件 包,然后再尝试安装MySQL。 (2)启动MySQL服务。 在使用MySQL之前,必须启动MySQL服务。在虚拟机上执行如下命令。 $systemctl start mysqld (3)查看MySQL服务运行状态。 通过查看MySQL服务的运行状态,以确认MySQL是否可用。在虚拟机上执行如 下命令。 $systemctl status mysqld 上述命令执行完成的效果如图5-4所示。 图5-4 查看MySQL服务的运行状态 大数据项目实战(第84 2版) 在图5-4中,出现active(running)的提示信息,说明MySQL服务处于启动状态。 (4)查看初始密码。 MySQL安装完成后,默认会为本地用户root提供一个初始密码,以便登录MySQL 进行相关配置。在虚拟机上执行如下命令查看初始密码。 $grep 'temporary password' /var/log/mysqld.log 上述命令执行完成的效果如图5-5所示。 图5-5 查看初始密码 从图5-5中可知,本地用户root的初始密码为b&5f9G>wZZio。需要说明的是,每 次安装MySQL时,本地用户root的初始密码都会有所不同。 (5)登录MySQL。 通过本地用户root登录MySQL,对其进行必要的配置。在虚拟机上执行如下命令。 $mysql -uroot -p 上述命令执行完成的效果如图5-6所示。 图5-6 登录MySQL(1) 在图5-6 中的“Enterpassword:”位置输入本地用户root的初始密码,然后按下 Enter键,如图5-7所示。 在图5-7中,出现mysql>提示符说明成功登录了MySQL,并进入MySQL命令行界 面,在该界面中可以执行SQL语句来操作MySQL。 (6)修改密码。 在对MySQL进行配置之前,需要修改本地用户root的初始密码。这里将本地用户 root的初始密码修改为Itcast@2023。在MySQL命令行界面中执行如下命令。 第5章 数据分析 85 图5-7 登录MySQL(2) mysql>ALTER USER 'root'@'localhost' IDENTIFIED BY 'Itcast@2023'; 上述命令执行完成后,须重新加载MySQL的权限表,以确保对用户权限的更改立即 生效。在MySQL命令行界面中执行如下命令。 mysql>FLUSH PRIVILEGES; 上述命令执行完成后,可以在MySQL命令行界面执行“exit;”命令退出登录。然后, 再次使用本地用户root登录MySQL,以验证密码是否成功修改。 (7)添加用户。 本项目后续实现数据可视化时,需要通过远程登录MySQL来读取数据。因此,我们 需要在MySQL中添加一个名为itcast的用户,用于远程登录MySQL。在MySQL命令 行界面中执行下列命令。 --添加一个名为itcast 的用户,并指定密码为Itcast@2023 mysql>CREATE USER 'itcast'@'%' IDENTIFIED BY 'Itcast@2023'; --授予用户itcast 对所有数据库和表拥有权限,并允许该用户通过任何主机进行远程登录 mysql>GRANT ALL PRIVILEGES ON *.* TO 'itcast'@'%' WITH GRANT OPTION; 上述命令执行完成后,需要重新加载MySQL的权限表,以确保对用户权限的更改立 即生效。 (8)上传Hive安装包。 将Hive安装包apache-hive-3.1.3-bin.tar.gz上传至虚拟机的/export/software目 录中。 (9)安装Hive。 采用解压缩方式将Hive安装至/export/servers目录。在虚拟机上执行如下命令。 大数据项目实战(第86 2版) $tar -zxvf /export/software/apache-hive-3.1.3-bin.tar.gz \ -C /export/servers/ 上述命令执行完成后,在虚拟机的/export/servers目录会看到一个名称为apachehive- 3.1.3-bin的目录。为了便于后续使用Hive,这里将Hive的安装目录重命名为hive- 3.1.3,在虚拟机的/export/servers目录中执行如下命令。 $mv apache-hive-3.1.3-bin hive-3.1.3 (10)同步依赖文件。 Hive和Hadoop都依赖Guava库来实现一些功能。然而,在Hive3.1.3和Hadoop 3.3.0中,这二者使用的Guava库版本不一致。具体而言,Hive3.1.3使用Guava库的版 本为19.0,而Hadoop3.3.0使用Guava库的版本为27.0。为了避免启动Hive时出现依 赖文件冲突的问题,我们需要统一Hive和Hadoop使用Guava库的版本。鉴于向下兼容 性的考虑,这里用Hadoop3.3.0所使用的Guava库替换Hive3.1.3中的Guava库,具体 操作步骤如下。 首先,进入Hadoop存放Guava库的目录。在虚拟机上执行如下命令。 $cd /export/servers/hadoop-3.3.0/share/hadoop/common/lib 然后,将Hadoop使用的Guava库guava-27.0-jre.jar复制到Hive存放Guava库的目 录。在虚拟机上执行如下命令。 $cp guava-27.0-jre.jar /export/servers/hive-3.1.3/lib 最后,删除Hive自带的Guava库guava-19.0.jar。在虚拟机上执行如下命令。 $rm -fr /export/servers/hive-3.1.3/lib/guava-19.0.jar (11)添加MySQL驱动包。 在使用MySQL存储Hive的元数据时,Hive需要通过JDBC与MySQL建立连接。 因此,我们需要将MySQL8.0版本的JDBC驱动包mysql-connector-j-8.0.31.jar上传到 Hive安装目录的lib目录中。 (12)创建Hive的配置文件。 Hive默认不提供用户可编辑的配置文件,而是提供一个名为hive-default.xml. template的模板文件供用户参考。为了创建Hive的配置文件,我们可以在Hive存放配 置文件的目录中创建一个名为hive-site.xml的文件。在虚拟机的/export/servers/hive- 3.1.3/conf目录中执行如下命令。 $touch hive-site.xml (13)编辑Hive的配置文件。 第5章 数据分析 87 使用vi编辑器来编辑Hive的配置文件hive-site.xml,在该文件中添加Hive的配置 信息。配置文件hive-site.xml修改完成后的效果如文件5-1所示。 文件5-1 hive-site.xml <? xml version="1.0" encoding="UTF-8" standalone="no"? > <? xml-stylesheet type="text/xsl" href="configuration.xsl"? > <configuration> <property> <name>javax.jdo.option.ConnectionURL</name> < value> jdbc:mysql://localhost:3306/hive? createDatabaseIfNotExist= true </value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.cj.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>Itcast@2023</value> </property> </configuration> 在文件5-1中,参数javax.jdo.option.ConnectionURL用于配置JDBC连接MySQL 的地址。参数javax.jdo.option.ConnectionDriverName用于配置驱动程序的名称。参数 javax.jdo.option.ConnectionUserName和javax.jdo.option.ConnectionPassword分别用 于配置连接MySQL的用户和密码。 在配置文件hive-site.xml中添加Hive的配置信息后,保存并退出编辑。 (14)配置Hive的系统环境变量。 为了方便后续使用Hive,我们需要在虚拟机中配置Hive的系统环境变量。在虚拟 机中,使用vi编辑器来编辑系统环境变量文件profile,在文件的末尾添加以下内容。 ex port HIVE_HOME=/export/servers/hive-3.1.3 export PATH=$PATH:$HIVE_HOME/bin 在系统环境变量文件profile中添加上述内容后,保存并退出编辑。然后,初始化虚 拟机的系统环境变量,使系统环境变量文件profile中修改的内容生效。 (15)初始化Hive的元数据。 在MySQL中初始化Hive的元数据,创建Hive所需的数据库和表结构。在虚拟机 大数据项目实战(第88 2版) 上执行如下命令。 $schematool -initSchema -dbType mysql 上述命令执行完成的效果如图5-8所示。 图5-8 初始化Hive的元数据 在图5-8中,出现Initializationscriptcompleted和schemaToolcompleted的提示信 息,说明在MySQL中成功初始化了Hive的元数据。 (16)连接Hive。 通过Hive自带的命令行工具CLI连接Hive。在虚拟机上执行如下命令。 $hive 上述命令执行完成的效果如图5-9所示。 图5-9 连接Hive 在图5-9中,出现hive>提示符说明成功连接Hive,并进入CLI命令行界面,在该界 面可以执行HiveQL语句来操作Hive。 5.3 数据仓库 5.3.1 数据仓库简介 数据仓库是一个面向主题、相对稳定和反映历史变化、集成的数据集合,用于支持企 业或组织的决策分析。对数据仓库的定义指出了其具有以下4个特点。 第5章数据分析89 1. 数据仓库是面向主题的 数据库管理系统以业务流程为导向组织数据,主要面向事务处理。然而,数据仓库以 需求分析为导向组织数据,主要面向数据分析。数据仓库中的数据按照主题进行组织,主 题是指用户在使用数据仓库进行决策时关注的重点方面。举例来说,可以将公司的销售 数据划分为一个主题,从而实现与销售相关的数据分析。 2. 数据仓库是相对稳定的 数据仓库中的数据反映一段时间内的历史数据。数据进入数据仓库后通常会被保留 较长时间。由于数据仓库的目标是支持决策分析而非事务处理,所以数据修改和删除操 作相对较少,使得不同数据源集成到数据仓库的过程相对稳定。 3. 数据仓库是反映历史变化的 数据仓库记录的数据是历史数据,这些数据反映了企业从过去某个时间点到目前各 阶段的信息,方便企业对业务进行分析,从而改善业务经营决策以及预测企业未来趋势。 4. 数据仓库是集成的 数据仓库的数据通常来自不同的数据源,需要从这些数据源中抽取与需求分析相关 的数据。为了确保数据的一致性,需要对来自不同数据源的数据进行转换处理,最终将其 加载到数据仓库中,实现数据的集成。 3.数据仓库设计 5.2 1. 数据仓库的分层结构 数据仓库分层是数据仓库设计的基础和依据,它是对数据仓库内的数据进行有效组 织和管理的方法。通常情况下,数据仓库内的数据分为3层,即源数据层(operational datastore,ODS )、数据仓库层(datawarehouse,DW)和数据应用层(applicationdata service,ADS), 具体介绍如下。 (1)源数据层。 源数据层存储的数据是数据仓库的基础数据,该层存储的数据抽取自不同的数据源, 抽取的这些数据通常会进行诸如去噪、去重、标准化等一系列转换操作后才会加载到源数 据层。不过在某些应用场景中,为了确保源数据层存储数据的原始性,也可以直接将从不 同数据源抽取的数据加载到源数据层,不进行任何转换操作。 (2)数据仓库层。 数据仓库层存储的数据是对源数据层中数据的轻度汇总,所谓轻度汇总就是按照一 定的主题去组合这些数据。数据仓库层从上到下,又可以细分为明细层(datawarehouse detail,DWD )、中间层(datawarehousemart,DWM)和业务层(datawarehouseservice, DWS), 具体介绍如下。 ①明细层的作用是根据业务需求对源数据层的数据进行进一步转换,不过该层的数 据粒度与源数据层的数据粒度保持一致。 ②中间层的作用是在明细层的基础上,对数据做一些轻微的聚合操作,生成一系列 的中间表,从而提高公共指标的复用性,减少重复工作。 ③业务层的作用是在明细层和中间层的基础上,对某个主题的数据进行汇总,主要