关于java:不写代码轻松实现数据可视化这款基于SpringBoot的神器简直绝了

6次阅读

共计 6422 个字符,预计需要花费 17 分钟才能阅读完成。

之前有读者问我有没有什么好用的 BI(Business Intelligence)工具?BI 工具简略来说就是一种数据可视化工具。明天给大家举荐一款开源的数据可视化工具DataEase,基于 SpringBoot 实现,集成 Apache Doris + Kettle,可反对超大数据量秒级查问,心愿对大家有所帮忙!

SpringBoot 实战电商我的项目 mall(50k+star)地址:https://github.com/macrozheng/mall

简介

DataEase 是一款号称 人人可用 的开源数据可视化剖析工具,在 Github 上曾经有 4.1K+Star。致力于帮忙用户疾速剖析数据并洞察业务趋势,从而实现业务的改良与优化。DataEase 反对丰盛的数据源连贯,可能通过拖拽形式疾速制作图表,并能够分享给别人。

上面是一张由 DataEase 生成的可视化大屏,还是挺炫酷的。

架构

作为一款数据可视化工具,DataEase 应用了现阶段风行的大数据技术 Apache Doris 和 Kettle,如果你想学习这两种技术的话,这个我的项目是个不错的抉择。

零碎架构

DataEase 应用的技术栈如下:

技术 阐明
SpringBoot 后端根底框架
MySQL 数据存储
Apache Doris 一个现代化的 MPP 剖析型数据库产品。仅需亚秒级响应工夫即可取得查问后果,无效地反对实时数据分析。
Kettle 一款开源的 ETL(即数据抽取、转换、装载的过程)工具,纯 Java 编写,能够实现高效稳固的数据抽取。
Docker 容器化部署
Vue 前端根底框架
Element 前端 UI 框架

各种技术在 DataEase 中的应用场景如下:

性能架构

上面是 DataEase 的性能架构图,从中咱们很容易看出应用 DataEase 咱们能做什么。

装置

DataEase 提供了安装包,下载安装包,应用装置脚本 install.sh 即可实现装置,如果你的服务器 曾经装置了 MySQL,须要一些额定的配置。

  • 首先咱们须要下载安装包,这里应用的是 v1.5.2 版本,下载地址:https://github.com/dataease/d…

  • 下载实现后上传到 Linux 服务器,应用如下命令解压到指定目录;
tar -zxvf dataease-v1.5.2-online.tar.gz
  • 解压实现后目录构造如下,留神 dataease 文件夹下有 docker-compose 部署脚本;

  • 接下来批改装置配置 install.conf,次要批改服务运行端口DE_PORT 和 MySQL 配置;
# 根底配置
## 装置目录
DE_BASE=/opt
## Service 端口(默认 80,大概率抵触)DE_PORT=8010

# 数据库配置
## 是否应用内部数据库
DE_EXTERNAL_MYSQL=false
## 数据库地址(默认 mysql,之前如果用 docker 装置过 mysql 倡议批改)DE_MYSQL_HOST=mysql-de
## 数据库端口(默认 3306,之前如果用 docker 装置过 mysql 倡议批改)DE_MYSQL_PORT=3307
## DataEase 数据库库名
DE_MYSQL_DB=dataease
## 数据库用户名
DE_MYSQL_USER=root
## 数据库明码
DE_MYSQL_PASSWORD=Password123@mysql
  • 批改 DataEase 的 docker-compose 文件,门路为dataease/docker-compose.yml,批改 MySQL 依赖名称和网络配置,默认网络配置可能会引起抵触;
services:

  dataease:
    image: registry.cn-qingdao.aliyuncs.com/dataease/dataease:v1.5.2
    container_name: dataease
    ports:
      - ${DE_PORT}:8081
    mem_limit: 4096m
    volumes:
      - ${DE_BASE}/dataease/conf:/opt/dataease/conf
      - ${DE_BASE}/dataease/logs:/opt/dataease/logs
      - ${DE_BASE}/dataease/plugins/thirdpart:/opt/dataease/plugins/thirdpart
      - ${DE_BASE}/dataease/data/kettle:/opt/dataease/data/kettle
    depends_on:
      # 如果之前应用 Docker 装置过 mysql,批改名称
      mysql-de:
        condition: service_healthy
    networks:
      - dataease-network

networks:
  dataease-network:
    driver: bridge
    ipam:
      driver: default
      # 默认网段配置可能会抵触,倡议批改
      config:
        - subnet: 172.33.0.0/16
          gateway: 172.33.0.1
  • 批改 Doris 的 docker-compose 文件,门路为dataease/docker-compose-kettle-doris.yml,次要批改网络配置;
version: '2.1'
services:

  doris-fe:
    image: registry.cn-qingdao.aliyuncs.com/dataease/doris:0.15
    container_name: doris-fe
    networks:
      # 批改为 33 网段避免抵触
      dataease-network :
        ipv4_address: 172.33.0.198
    restart: always

  doris-be:
    image: registry.cn-qingdao.aliyuncs.com/dataease/doris:0.15
    networks:
      # 批改为 33 网段避免抵触
      dataease-network :
        ipv4_address: 172.33.0.199
    restart: always
  • 批改 MySQL 的 docker-compose 文件,门路为dataease/docker-compose-mysql.yml,只有批改容器名称即可;
version: '2.1'
services:

  mysql-de:
    image: registry.cn-qingdao.aliyuncs.com/dataease/mysql:5.7.36
    # 之前应用 Docker 装置过 mysql,须要批改容器名称
    container_name: mysql-de
    env_file:
      - ${DE_BASE}/dataease/conf/mysql.env
    ports:
      - ${DE_MYSQL_PORT}:3306
    volumes:
      - ${DE_BASE}/dataease/conf/my.cnf:/etc/mysql/conf.d/my.cnf
      - ${DE_BASE}/dataease/bin/mysql:/docker-entrypoint-initdb.d/
      - ${DE_BASE}/dataease/data/mysql:/var/lib/mysql
    networks:
      - dataease-network
  • 如果你启用了 firewall 防火墙的话,还要凋谢下 8010 端口;
firewall-cmd --zone=public --add-port=8010/tcp --permanent
firewall-cmd --reload
  • 所有准备就绪,间接运行装置目录下的 install.sh 文件进行装置;
./install.sh
  • 装置过程波及下载镜像,工夫较长须要急躁期待,最终装置胜利后显示如下;
➜  dataease-v1.5.2-online ./install.sh 

Stopping doris-fe ... done
Stopping doris-be ... done
Stopping kettle   ... done
Removing doris-fe ... done
Removing doris-be ... done
Removing kettle   ... done
Removing network dataease_dataease-network
======================= 开始装置 =======================
[DATAEASE Log]: 拷贝配置文件模板文件  -> /opt/dataease/conf 
[DATAEASE Log]: 依据装置配置参数调整配置文件 
time: Wed Dec 22 10:59:39 CST 2021
/usr/sbin/getenforce
[DATAEASE Log]: 检测到 Docker 已装置,跳过装置步骤 
[DATAEASE Log]: 启动 Docker  
Redirecting to /bin/systemctl start docker.service
[DATAEASE Log]: 检测到 Docker Compose 已装置,跳过装置步骤 
[DATAEASE Log]: 拉取镜像 
Pulling doris-be ... done
Pulling kettle   ... done
Pulling mysql-de ... done
Pulling dataease ... done
Pulling doris-fe ... done
... 省略若干日志
  Name                Command                       State                         Ports              
-----------------------------------------------------------------------------------------------------
dataease   /deployments/run-java.sh         Up (health: starting)   0.0.0.0:8010->8081/tcp           
doris-be   /entrypoint.sh                   Up (healthy)                                             
doris-fe   /entrypoint.sh                   Up (health: starting)                                    
kettle     /opt/kettle/carte.sh kettl ...   Up                                                       
mysql-de   docker-entrypoint.sh mysqld      Up (healthy)            0.0.0.0:3306->3306/tcp, 33060/tcp
[DATAEASE Log]: 服务启动中,请稍候 ... 
[DATAEASE Log]: 服务启动中,请稍候 ... 
[DATAEASE Log]:【正告】服务在等待时间内未齐全启动!请稍后应用 dectl status 查看服务运行状况。======================= 装置实现 =======================

请通过以下形式拜访:
 URL: http://$LOCAL_IP:8010
 用户名: admin
 初始密码: dataease
  • 因为咱们批改了 MySQL 的配置,还需批改装置目录 /opt 下的 MySQL 连贯配置,文件门路为/opt/dataease/conf/dataease.properties,改为mysql-de
# 数据库配置
spring.datasource.url=jdbc:mysql://mysql-de:3306/dataease?autoReconnect=false&useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false
  • 而后重启 dataease 容器;
docker restart dataease
  • 重启时应用 docker logs -f dataease 查看日志,当数据库导入实现后我的项目才算启动胜利;

  • 因为 DateEase 装置胜利后会主动在零碎中注册 dataease 服务,所以咱们能够应用如下命令来操作它。
# 查看服务状态
systemctl status dataease
# 启动服务
systemctl start dataease
# 进行服务
systemctl stop dataease

应用

应用 DataEase 能够不便地实现数据可视化,接下来咱们以 Excel 和 MySQL 中的数据为例,来体验下它的性能。

基本概念

在应用 DataEase 之前,咱们得理解它的一些基本概念,这对应用它会很有帮忙。

  • 数据源:是后续数据分析的数据起源,指的是各种数据库连贯信息,反对 MySQL、Elasticsearch、MongoDB 等罕用数据源;
  • 数据集:数据的汇合,能够是 Excel 数据、数据库表数据、自定义 SQL 查问数据,是视图的数据起源;
  • 视图:可视化展现的最小单元,是组成仪表板的根本元素,能够是折线图、柱状图、饼状图等;
  • 仪表板:可视化大屏,视图组合界面;
  • 模板:可用来疾速构建仪表板的数据及款式模板。

Excel 数据分析

上面咱们将从 Excel 中获取数据,实现仪表板,来体验下 DataEase 的数据可视化性能。

  • DataEase 启动胜利后,应用账号 admin:dataease 即可登录,拜访地址:http://192.168.3.105:8010/

  • 因为咱们之前批改了 MySQL 容器的名称,这里的 数据源 咱们也要批改下;

  • 接下来咱们须要创立一个 数据集,应用官网的示例 Excel 即可,下载实现后能够关上看下,一份商品销售报表,下载地址:https://dataease.io/docs/manu…

  • 而后抉择增加 数据集

  • 新建时上传 Excel,最初抉择确认进行导入;

  • 因为之前批改了 Doris 的网段,导入 Excel 数据会呈现无奈显示的状况,并弹出如下谬误提醒;

  • 进入 mysql-de 容器外部,输出如下命令即可解决;
# 进入内置 MySQL 容器内
docker exec -it mysql-de sh
# 进入 MySQL 容器后,连贯 doris-fe
mysql -uroot -h doris-fe -P 9030
# 因为批改了 doris 的网段,此处也要批改
ALTER SYSTEM ADD BACKEND "172.33.0.199:9050";
SET PASSWORD FOR 'root' = PASSWORD('Password123@doris');
CREATE DATABASE dataease;
  • 数据导入胜利后,就能够开始创立 视图 了,抉择咱们刚刚导入的数据集;

  • 再抉择 视图 的类型,这里抉择了示意散布的饼图;

  • 拖动抉择维度和指标,再改改款式,最初再保留下,一张视图就实现了;

  • 再多创立几个视图,而后就能够创立 仪表板 了,再通过拖拽编辑的模式,仪表板就实现了,是不是挺不便的!

数据库数据分析

当然 DataEase 也反对从数据库中导入数据,甚至能够自定义 SQL 查问,上面咱们来体验下它的这些性能。

  • 首先咱们得新建一个数据源,能够抉择各种类型数据源,反对还挺多的,这里抉择 MySQL;

  • 而后创立数据集,抉择从数据库增加数据集;

  • 再创立视图,应用下面创立的数据集即可;

  • 当然你也能够自定义 SQL 查问来增加数据集;

  • DataEase 还有个比拟弱小的性能,能够设置各个视图间接依据某个字段进行 联动,比方在官网示例中,咱们抉择了某个省份,其余视图的数据就变成了这个省份的了;

  • 还有个比拟有意思的性能叫 下钻,比方咱们抉择某个省份进行下钻,就能够查看该省份下的城市相干数据。

总结

总的来说,DataEase 是一款十分不错的数据可视化工具。它能够让咱们不写代码,就轻松实现一些数据可视化的需要,反对从各种数据源和 Excel 中剖析数据。并且它应用了当下风行的大数据分析技术 Apache Doris 和 Kettle,对这些技术感兴趣的敌人也能够尝试下它。

参考资料

  • 我的项目地址:https://github.com/dataease/d…
  • 官网文档:https://dataease.io/docs/

本文 GitHub https://github.com/macrozheng/mall-learning 曾经收录,欢送大家 Star!

正文完
 0