学习目标/Target
了解数据可视化系统架构
掌握Phoenix集成HBase
熟悉建立Phoenix与HBase表映射
了解Spring Boot项目的创建
掌握Java Web项目中实体类的创建
掌握Java Web项目中数据库访问接口的创建
掌握Java Web项目中控制器类的创建
熟悉Java Web项目中HTML页面的创建
熟悉如何运行Spring Boot项目
概述
数据可视化是指将数据或信息表示为图形中的可视对象来传达数据或信息的技术,目标是清晰有效地向用户传达信息,以便用户可以轻松了解数据或信息中的复杂关系。用户可以通过图形中的可视对象直观地看到数据分析结果,从而更容易理解业务变化趋势或发现新的业务模式。数据可视化是数据分析中的一个重要步骤。本章将详细讲解如何搭建数据可视化系统,展示本项目的分析结果数据。
1. 系统概述
1.1 技术选取
SpringBoot 的设计目的是为了简化Spring应用的初始搭建以及开发过程,摆脱复杂的手动配置,能迅速搭建起一个Java Web项目。
MyBatis是一个开源的数据持久层框架,其内部封装了JDBC访问数据库的操作,支持普通的SQL查询、存储过程和高级映射。
Echarts是一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,提供了多种丰富的可视化类型。
多学一招:Phoenix查询引擎与MyBatis
MyBatis是一个支持SQL查询的数据持久层框架,而项目所用到的HBase数据库是不支持JDBC访问和SQL语句查询的,这就导致我们搭建的数据可视化系统无法使用MyBatis框架访问HBase数据库。因此,需要借助Apache Phoenix查询引擎使得HBase支持通过JDBC的方式进行访问,并将SQL查询转成 HBase的相关操作。
1.2 系统架构
离线数据可视化展示
实时数据可视化展示
2. 数据表设计与实现
2.1 数据表介绍
热门品类Top10分析结果表user_session_top10
各区域热门商品Top3分析结果表user_session_top3
页面单跳转化率统计表conversion
用户广告点击流实时统计表adstream
2.2 Phoenix集成HBase
在虚拟机Spark01中安装Phoenix并集成HBase。
STEP 01
下载Phoenix安装包:
访问Phoenix官网下载Linux操作系统的Phoenix安装包apache-phoenix-4.14.1-HBase-1.2-bin.tar.gz。
STEP 02
上传Phoenix安装包:
使用SecureCRT远程连接工具连接虚拟机Spark01,在存放应用安装包的目录/export/software/下执行“rz”命令上传Phoenix安装包。
STEP 03
安装Phoenix:
通过解压缩的方式安装Phoenix,将Phoenix安装到存放应用的目录/export/servers/。
tar -zxvf /export/software/apache-phoenix-4.14.1-HBase-1.2-bin.tar.gz -C /export/servers/
STEP 04
Phoenix集成HBase(拷贝jar包):
进入Phoenix安装目录,将phoenix-core-4.14.1-HBase-1.2.jar和phoenix-4.14.1-HBase-1.2-client.jar拷贝到HBase安装目录的lib目录下。
$ cd /export/servers/apache-phoenix-4.14.1-HBase-1.2-bin/
$ cp {phoenix-core-4.14.1-HBase-1.2.jar,phoenix-4.14.1-HBase-1.2-client.jar} /export/servers/hbase-1.2.1/lib/
STEP 05
Phoenix集成HBase(关闭HBase集群):
执行“stop-hbase.sh”命令关闭HBase集群。
STEP 06
Phoenix集成HBase(修改HBase配置文件):
进入HBase安装目录下的conf目录,执行“vi hbase-site.xml”命令编辑hbase-site.xml文件,添加命名空间映射配置。
<property>
<name>phoenix.schema.isNamespaceMappingEnabled</name>
<value>true</value>
</property>
<property>
<name>phoenix.schema.mapSystemTablesToNamespace</name>
<value>true</value>
</property>
STEP 07
Phoenix集成HBase(分发文件):
将HBase安装目录分发到集群中的其它两台虚拟机Spark02和Spark03。
scp -r /export/servers/hbase-1.2.1/ root@spark02:/export/servers/
scp -r /export/servers/hbase-1.2.1/ root@spark03:/export/servers/
STEP 08
Phoenix集成HBase(复制HBase配置文件):
进入HBase安装目录下的conf目录,将hbase-site.xml文件复制到Phoenix安装目录下的bin目录。
cp hbase-site.xml /export/servers/apache-phoenix-4.14.1-HBase-1.2-bin/bin/
STEP 09
Phoenix集成HBase(启动HBase集群):
执行“start-hbase.sh”命令启动HBase集群。
在启动HBase集群前应确保Hadoop和Zookeeper集群正常启动,且保证集群各服务间时间一致,若出现时间不一致情况,则需要在各服务器执行“systemctl restart chronyd”命令重启chronyd服务进行时间同步。
2.3 建立Phoenix与HBase表映射
操作Phoenix,建立Phoenix与HBase表映射。
Phoenix提供三种操作方式,即命令行界面、JDBC和Squirrel,其中命令行界面是Phoenix默认提供的交互工具sqlline;JDBC是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口;Squirrel是Phoenix的客户端工具提供可视化操作窗口。
连接Phoenix:
在Phoenix安装目录的bin目录中存在Python脚本文件sqlline.py用于启动sqlline,在启动sqlline时需要输入Zookeeper集群地址及端口号连接Phoenix。
#进入Phoenix安装目录 $ cd /export/servers/apache-phoenix-4.14.1-HBase-1.2-bin
#启动sqlline
$ bin/sqlline.py spark01,spark02,spark03:2181
查看Phoenix表及视图:
在sqlline中执行“!table”命令查看Phoenix表及视图。
建立表映射(top10):
通过CREATE语句在Phoenix中创建表top10建立与HBase数据库中表top10 的映射。
> create table "top10"
> (
> "ROW" varchar primary key,
> "top10_category"."cartcount" varchar,
> "top10_category"."category_id" varchar ,
> "top10_category"."purchasecount" varchar ,
> "top10_category"."viewcount" varchar
> ) column_encoded_bytes=0;
建立表映射(top3)。 通过CREATE语句在Phoenix中创建表top3建立与HBase数据库中表top3 的映射。
> create table "top3"
> (
> "ROW" varchar primary key,
> "top3_area_product"."product_id" varchar,
> "top3_area_product"."viewcount" varchar,
> "top3_area_product"."area" varchar
> ) column_encoded_bytes=0;
建立表映射(conversion):
通过CREATE语句在Phoenix中创建表conversion建立与HBase数据库中表conversion的映射。
> create table "conversion"
> (
> "ROW" varchar primary key,
> "page_conversion"."convert_page" varchar,
> "page_conversion"."convert_rage" varchar
> ) column_encoded_bytes=0;
建立表映射(adstream):
通过CREATE语句在Phoenix中创建表adstream建立与HBase数据库中表adstream的映射。
> create table "adstream"
> (
> "ROW" varchar primary key,
> "area_ads_count"."city" varchar,
> "area_ads_count"."ad_count" varchar,
> "area_ads_count"."ad_id" varchar
> ) column_encoded_bytes=0;
Phoenix的命令区分大小写,如果不加双引号,则默认为大写,因此在Phoenix中执行创建表的命令时需要在表名、列族名和列名处添加双引号。
若在Phoenix中执行删除表操作,则HBase中具有映射关系的表也会一同被删除,导致数据丢失。如果Phoenix中创建的映射表只是用于查询操作,则建议使用创建视图的方式建立映射,建立视图映射的方式与建立表映射的方式一致,这里以建立视图adstream的映射为例。
> create view "adstream"
> ( > "ROW" varchar primary key,
> "area_ads_count"."city" varchar,
> "area_ads_count"."ad_count" varchar,
> "area_ads_count"."ad_id" varchar
> );
如果想要删除Phoenix中的表,又不想在删除Phoenix表的同时删除HBase中的映射表,造成数据的丢失,那么可以在Phoenix中执行删除表操作前,在HBase中创建映射表的快照。
disable '映射表'
#关闭表 snapshot '映射表', '快照名称'
#创建快照
在Phoenix中执行删除表操作后,在HBase中通过创建的快照恢复映射表。
list_snapshots #查询所有快照
clone_snapshot '快照名称', '映射表' #克隆快照赋予新的表