【大数据学习篇12】 Spark项目实战-数据可视化(一)

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 【大数据学习篇12】 Spark项目实战-数据可视化

学习目标/Target

了解数据可视化系统架构


掌握Phoenix集成HBase


熟悉建立Phoenix与HBase表映射


了解Spring Boot项目的创建


掌握Java Web项目中实体类的创建


掌握Java Web项目中数据库访问接口的创建


掌握Java Web项目中控制器类的创建


熟悉Java Web项目中HTML页面的创建


熟悉如何运行Spring Boot项目


概述

       数据可视化是指将数据或信息表示为图形中的可视对象来传达数据或信息的技术,目标是清晰有效地向用户传达信息,以便用户可以轻松了解数据或信息中的复杂关系。用户可以通过图形中的可视对象直观地看到数据分析结果,从而更容易理解业务变化趋势或发现新的业务模式。数据可视化是数据分析中的一个重要步骤。本章将详细讲解如何搭建数据可视化系统,展示本项目的分析结果数据。


1. 系统概述

1.1  技术选取


ac3d17d48b75407387012311a0de29f4.png

d904e270570c4d939212c648df713807.png


       SpringBoot 的设计目的是为了简化Spring应用的初始搭建以及开发过程,摆脱复杂的手动配置,能迅速搭建起一个Java Web项目。


8cd5dfeb95324a2cad15a07abb8889c5.png


       MyBatis是一个开源的数据持久层框架,其内部封装了JDBC访问数据库的操作,支持普通的SQL查询、存储过程和高级映射。


e1d9f7139df5446abb5910050c5bb9ad.png


        Echarts是一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,提供了多种丰富的可视化类型。


多学一招:Phoenix查询引擎与MyBatis


       MyBatis是一个支持SQL查询的数据持久层框架,而项目所用到的HBase数据库是不支持JDBC访问和SQL语句查询的,这就导致我们搭建的数据可视化系统无法使用MyBatis框架访问HBase数据库。因此,需要借助Apache Phoenix查询引擎使得HBase支持通过JDBC的方式进行访问,并将SQL查询转成 HBase的相关操作。


1.2  系统架构

离线数据可视化展示


39b743bfadbb48d8a09c69ea8973aae0.png

51c6ff59652b467ca9c4363006ff4c79.png


实时数据可视化展示


2859a80872244656aab01ccb61138aa7.png

793e1acec7d34f978a2c478cd5f43cf2.png

2. 数据表设计与实现

2.1  数据表介绍

热门品类Top10分析结果表user_session_top10


image.png

各区域热门商品Top3分析结果表user_session_top3

image.png

页面单跳转化率统计表conversion

image.png

用户广告点击流实时统计表adstream

image.png


2.2  Phoenix集成HBase


eca20e3e97544d72801f06e908f06bc1.png

在虚拟机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集群。


4b69635333904446af45aca608dfaba0.pngfe73773b4c6342b99f9d190ddd367f3a.png


       在启动HBase集群前应确保Hadoop和Zookeeper集群正常启动,且保证集群各服务间时间一致,若出现时间不一致情况,则需要在各服务器执行“systemctl restart chronyd”命令重启chronyd服务进行时间同步。


2.3  建立Phoenix与HBase表映射

6448e2a6840c478d8c7d5ce14f0b87e0.png

       操作Phoenix,建立Phoenix与HBase表映射。


        Phoenix提供三种操作方式,即命令行界面、JDBC和Squirrel,其中命令行界面是Phoenix默认提供的交互工具sqlline;JDBC是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口;Squirrel是Phoenix的客户端工具提供可视化操作窗口。

b97ab697e2b64412a03e6d42dedece6a.png

2d77d06e9f9f40c09bd61a35a4416b3e.png

连接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

325495c4608c4352b2be5ecf19d59946.png

c6d49ea15ce446d992ee16fd15f532de.png


查看Phoenix表及视图:

        在sqlline中执行“!table”命令查看Phoenix表及视图。


8004bfdb267f400a94eac444086cb4ab.png

4b9b8132f7d14bebb12f02f29e2d7279.png

建立表映射(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;


22aec08c43214ffb9f6a7128b9d3a7bf.png


       建立表映射(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;



68c9fd300e81498183944204bbe5ca34.png

建立表映射(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;


dd2c732afd354f7597a2800948fda829.png


建立表映射(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;


5f8b5f553c2b46faa97882793947a5e3.png


       Phoenix的命令区分大小写,如果不加双引号,则默认为大写,因此在Phoenix中执行创建表的命令时需要在表名、列族名和列名处添加双引号。

8796543731db433db2bb1605b1d9125c.png

       若在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 '快照名称', '映射表'   #克隆快照赋予新的表


相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
目录
相关文章
|
1天前
|
SQL 机器学习/深度学习 分布式计算
Spark快速上手:揭秘大数据处理的高效秘密,让你轻松应对海量数据
【10月更文挑战第25天】本文全面介绍了大数据处理框架 Spark,涵盖其基本概念、安装配置、编程模型及实际应用。Spark 是一个高效的分布式计算平台,支持批处理、实时流处理、SQL 查询和机器学习等任务。通过详细的技术综述和示例代码,帮助读者快速掌握 Spark 的核心技能。
13 6
|
1天前
|
分布式计算 大数据 OLAP
AnalyticDB与大数据生态集成:Spark & Flink
【10月更文挑战第25天】在大数据时代,实时数据处理和分析变得越来越重要。AnalyticDB(ADB)是阿里云推出的一款完全托管的实时数据仓库服务,支持PB级数据的实时分析。为了充分发挥AnalyticDB的潜力,将其与大数据处理工具如Apache Spark和Apache Flink集成是非常必要的。本文将从我个人的角度出发,分享如何将AnalyticDB与Spark和Flink集成,构建端到端的大数据处理流水线,实现数据的实时分析和处理。
11 1
|
11天前
|
分布式计算 大数据 Apache
利用.NET进行大数据处理:Apache Spark与.NET for Apache Spark
【10月更文挑战第15天】随着大数据成为企业决策和技术创新的关键驱动力,Apache Spark作为高效的大数据处理引擎,广受青睐。然而,.NET开发者面临使用Spark的门槛。本文介绍.NET for Apache Spark,展示如何通过C#和F#等.NET语言,结合Spark的强大功能进行大数据处理,简化开发流程并提升效率。示例代码演示了读取CSV文件及统计分析的基本操作,突显了.NET for Apache Spark的易用性和强大功能。
25 1
|
15天前
|
分布式计算 算法 Spark
spark学习之 GraphX—预测社交圈子
spark学习之 GraphX—预测社交圈子
24 0
|
21天前
|
存储 机器学习/深度学习 分布式计算
大数据技术——解锁数据的力量,引领未来趋势
【10月更文挑战第5天】大数据技术——解锁数据的力量,引领未来趋势
|
22天前
|
分布式计算 关系型数据库 MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
43 3
|
1天前
|
存储 安全 大数据
大数据隐私保护:用户数据的安全之道
【10月更文挑战第31天】在大数据时代,数据的价值日益凸显,但用户隐私保护问题也愈发严峻。本文探讨了大数据隐私保护的重要性、面临的挑战及有效解决方案,旨在为企业和社会提供用户数据安全的指导。通过加强透明度、采用加密技术、实施数据最小化原则、加强访问控制、采用隐私保护技术和提升用户意识,共同推动大数据隐私保护的发展。
|
5天前
|
SQL 存储 大数据
大数据中数据提取
【10月更文挑战第19天】
13 2
|
21天前
|
SQL 消息中间件 大数据
大数据-159 Apache Kylin 构建Cube 准备和测试数据(一)
大数据-159 Apache Kylin 构建Cube 准备和测试数据(一)
33 1
|
21天前
|
SQL 大数据 Apache
大数据-159 Apache Kylin 构建Cube 准备和测试数据(二)
大数据-159 Apache Kylin 构建Cube 准备和测试数据(二)
59 1