当前位置: 首页 > news >正文

线上问诊:可视化展示

系列文章目录

线上问诊:业务数据采集
线上问诊:数仓数据同步
线上问诊:数仓开发(一)
线上问诊:数仓开发(二)
线上问诊:数仓开发(三)
线上问诊:可视化展示


文章目录

  • 系列文章目录
  • 前言
  • 一、全流程调度
    • 1.生产新数据
    • 2.编写脚本
    • 3.脚本测试
  • 二、可视化展示
    • 1.安装Miniconda3
    • 2.安装python3
    • 3.Superset部署
      • 1.安装依赖
      • 2.加载模块
    • 4.Superset部署
      • 1.安装Superset
      • 2.配置Superset元数据库
      • 3.修改superset配置文件
      • 4.安装python msyql驱动
      • 5.初始化superset元数据
    • 5.SupersetSet初始化
      • 1.创建管理员用户
      • 2.初始化superset
      • 3.启动脚本
    • 6.Superset使用
      • 1.连接MYSQL
      • 2.配置Table
      • 3.制作仪表盘
  • 总结


前言

这次博客我们就可以完成线上问诊的离线数仓项目。


一、全流程调度

正常应该使用DolphinScheduler进行全流程调度,但是由于博主的电脑硬件的极限。所以为了完成整个项目,我们自己写一个bash脚本,来进行流程调度

1.生产新数据

vim /opt/module/maxwell/config.properties

在这里插入图片描述
medical_mock.sh 1
在这里插入图片描述
在数据库中查看是否出现10号数据。

2.编写脚本

这个脚本是我自己写的,项目中原本没有
vim ~/bin/medical_run.sh

#!/bin/bash 
/bin/bash /home/atguigu/bin/medical_mysql_to_hdfs_full.sh all $1
/bin/bash /home/atguigu/bin/medical_hdfs_to_ods.sh all $1
/bin/bash /home/atguigu/bin/medical_ods_to_dwd.sh all $1
/bin/bash /home/atguigu/bin/medical_ods_to_dim.sh all $1
/bin/bash /home/atguigu/bin/medical_dwd_to_dws_1d.sh all $1
/bin/bash /home/atguigu/bin/medical_dws_1d_to_dws_nd.sh all $1
/bin/bash /home/atguigu/bin/medical_dws_1d_to_dws_td.sh all $1
/bin/bash /home/atguigu/bin/medical_dws_to_ads.sh all $1
/bin/bash /home/atguigu/bin/medical_hdfs_to_mysql.sh all

添加权限
chmod +x ~/bin/medical_run.sh

3.脚本测试

先打开之前创建的所有通道

myhadoop.sh start
zk.sh start
kf.sh start
mxw.sh start
medical-f1.sh start
hiveservices.sh start

medical_run.sh 2023-05-10
在这里插入图片描述
当数据库中出现10号,代表成功。

二、可视化展示

这里我们就不需要通道了,如果硬件不太够,可以把通道关闭。

1.安装Miniconda3

minconda3清华源
在这里插入图片描述
bash Miniconda3-latest-Linux-x86_64.sh
在这里插入图片描述
安装地址修改一下。
/opt/module/miniconda3
激活环境
source ~/.bashrc
取消默认激活base
conda config --set auto_activate_base false
换源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
conda config --set show_channel_urls yes

2.安装python3

conda create --name superset python=3.8.16
激活环境
conda activate superset
在这里插入图片描述

3.Superset部署

1.安装依赖

sudo yum install -y gcc gcc-c++ libffi-devel python-devel python-pip python-wheel python-setuptools openssl-devel cyrus-sasl-devel openldap-devel

2.加载模块

编写一个base.txt文件
vim base.txt

aiohttp==3.8.1# via slackclient
aiosignal==1.2.0# via aiohttp
alembic==1.6.5# via flask-migrate
amqp==5.1.0# via kombu
apispec[yaml]==3.3.2# via flask-appbuilder
async-timeout==4.0.2# via aiohttp
attrs==21.2.0# via#   aiohttp#   jsonschema
babel==2.9.1# via flask-babel
backoff==1.11.1# via apache-superset
billiard==3.6.4.0# via celery
bleach==3.3.1# via apache-superset
brotli==1.0.9# via flask-compress
cachelib==0.4.1# via apache-superset
celery==5.2.2# via apache-superset
cffi==1.14.6# via cryptography
charset-normalizer==2.0.4# via aiohttp
click==8.0.4# via#   apache-superset#   celery#   click-didyoumean#   click-plugins#   click-repl#   flask#   flask-appbuilder
click-didyoumean==0.3.0# via celery
click-plugins==1.1.1# via celery
click-repl==0.2.0# via celery
colorama==0.4.4# via#   apache-superset#   flask-appbuilder
convertdate==2.3.2# via holidays
cron-descriptor==1.2.24# via apache-superset
croniter==1.0.15# via apache-superset
cryptography==3.4.7# via apache-superset
deprecation==2.1.0# via apache-superset
dnspython==2.1.0# via email-validator
email-validator==1.1.3# via flask-appbuilder
flask==2.0.3# via#   apache-superset#   flask-appbuilder#   flask-babel#   flask-caching#   flask-compress#   flask-jwt-extended#   flask-login#   flask-migrate#   flask-sqlalchemy#   flask-wtf
flask-appbuilder==4.1.3# via apache-superset
flask-babel==1.0.0# via flask-appbuilder
flask-caching==1.10.1# via apache-superset
flask-compress==1.10.1# via apache-superset
flask-jwt-extended==4.3.1# via flask-appbuilder
flask-login==0.4.1# via flask-appbuilder
flask-migrate==3.1.0# via apache-superset
flask-sqlalchemy==2.5.1# via#   flask-appbuilder#   flask-migrate
flask-talisman==0.8.1# via apache-superset
flask-wtf==0.14.3# via#   apache-superset#   flask-appbuilder
frozenlist==1.3.0# via#   aiohttp#   aiosignal
func-timeout==4.3.5# via apache-superset
geographiclib==1.52# via geopy
geopy==2.2.0# via apache-superset
graphlib-backport==1.0.3# via apache-superset
gunicorn==20.1.0# via apache-superset
hashids==1.3.1# via apache-superset
holidays==0.10.3# via apache-superset
humanize==3.11.0# via apache-superset
idna==3.2# via#   email-validator#   yarl
isodate==0.6.0# via apache-superset
itsdangerous==2.1.1# via#   flask#   flask-wtf
jinja2==3.0.3# via#   flask#   flask-babel
jsonschema==3.2.0# via flask-appbuilder
kombu==5.2.4# via celery
korean-lunar-calendar==0.2.1# via holidays
mako==1.1.4# via alembic
markdown==3.3.4# via apache-superset
markupsafe==2.0.1# via#   jinja2#   mako#   wtforms
marshmallow==3.13.0# via#   flask-appbuilder#   marshmallow-enum#   marshmallow-sqlalchemy
marshmallow-enum==1.5.1# via flask-appbuilder
marshmallow-sqlalchemy==0.23.1# via flask-appbuilder
msgpack==1.0.2# via apache-superset
multidict==5.1.0# via#   aiohttp#   yarl
numpy==1.22.1# via#   apache-superset#   pandas#   pyarrow
packaging==21.3# via#   bleach#   deprecation
pandas==1.3.4# via apache-superset
parsedatetime==2.6# via apache-superset
pgsanity==0.2.9# via apache-superset
polyline==1.4.0# via apache-superset
prison==0.2.1# via flask-appbuilder
prompt-toolkit==3.0.28# via click-repl
pyarrow==5.0.0# via apache-superset
pycparser==2.20# via cffi
pyjwt==2.4.0# via#   apache-superset#   flask-appbuilder#   flask-jwt-extended
pymeeus==0.5.11# via convertdate
pyparsing==3.0.6# via#   apache-superset#   packaging
pyrsistent==0.16.1# via jsonschema
python-dateutil==2.8.2# via#   alembic#   apache-superset#   croniter#   flask-appbuilder#   holidays#   pandas
python-dotenv==0.19.0# via apache-superset
python-editor==1.0.4# via alembic
python-geohash==0.8.5# via apache-superset
pytz==2021.3# via#   babel#   celery#   convertdate#   flask-babel#   pandas
pyyaml==5.4.1# via#   apache-superset#   apispec
redis==3.5.3# via apache-superset
selenium==3.141.0# via apache-superset
simplejson==3.17.3# via apache-superset
six==1.16.0# via#   bleach#   click-repl#   flask-talisman#   holidays#   isodate#   jsonschema#   polyline#   prison#   pyrsistent#   python-dateutil#   sqlalchemy-utils#   wtforms-json
slackclient==2.5.0# via apache-superset
sqlalchemy==1.3.24# via#   alembic#   apache-superset#   flask-appbuilder#   flask-sqlalchemy#   marshmallow-sqlalchemy#   sqlalchemy-utils
sqlalchemy-utils==0.37.8# via#   apache-superset#   flask-appbuilder
sqlparse==0.3.0# via apache-superset
tabulate==0.8.9# via apache-superset
typing-extensions==3.10.0.0# via apache-superset
urllib3==1.26.6# via selenium
vine==5.0.0# via#   amqp#   celery#   kombu
wcwidth==0.2.5# via prompt-toolkit
webencodings==0.5.1# via bleach
werkzeug==2.0.3# via#   flask#   flask-jwt-extended
wtforms==2.3.3# via#   flask-appbuilder#   flask-wtf#   wtforms-json
wtforms-json==0.3.3# via apache-superset
yarl==1.6.3# via aiohttp# The following packages are considered to be unsafe in a requirements file:
# setuptools

4.Superset部署

1.安装Superset

pip install apache-superset==2.0.0 -i https://pypi.tuna.tsinghua.edu.cn/simple -r base.txt

2.配置Superset元数据库

CREATE DATABASE superset DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
create user superset@'%' identified WITH mysql_native_password BY 'superset';
grant all privileges on *.* to superset@'%' with grant option;
flush privileges;

3.修改superset配置文件

vim /opt/module/miniconda3/envs/superset/lib/python3.8/site-packages/superset/config.py
在这里插入图片描述
SQLALCHEMY_DATABASE_URI = ‘mysql://superset:superset@hadoop102:3306/superset?charset=utf8’

4.安装python msyql驱动

conda install mysqlclient

5.初始化superset元数据

export FLASK_APP=superset
superset db upgrade

5.SupersetSet初始化

1.创建管理员用户

superset fab create-admin
在这里插入图片描述
密码自己输入一下,其他的默认就行了。

2.初始化superset

superset init

3.启动脚本

pip install gunicorn -i https://pypi.douban.com/simple/
vim ~/bin/superset.sh

#!/bin/bashsuperset_status(){result=`ps -ef | awk '/gunicorn/ && !/awk/{print $2}' | wc -l`if [[ $result -eq 0 ]]; thenreturn 0elsereturn 1fi
}
superset_start(){source ~/.bashrcsuperset_status >/dev/null 2>&1if [[ $? -eq 0 ]]; thenconda activate superset ; gunicorn --workers 5 --timeout 120 --bind hadoop102:8787 --daemon 'superset.app:create_app()'elseecho "superset正在运行"fi}superset_stop(){superset_status >/dev/null 2>&1if [[ $? -eq 0 ]]; thenecho "superset未在运行"elseps -ef | awk '/gunicorn/ && !/awk/{print $2}' | xargs kill -9fi
}case $1 instart )echo "启动Superset"superset_start;;stop )echo "停止Superset"superset_stop;;restart )echo "重启Superset"superset_stopsuperset_start;;status )superset_status >/dev/null 2>&1if [[ $? -eq 0 ]]; thenecho "superset未在运行"elseecho "superset正在运行"fi
esac

添加权限
chmod +x ~/bin/superset.sh
启动superset
superset.sh start
访问http://hadoop102:8787
在这里插入图片描述
用之前设置的密码登录。
在这里插入图片描述

6.Superset使用

1.连接MYSQL

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2.配置Table

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
用这三张表进行数据可视化。

3.制作仪表盘

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以和数据库数据对比一下。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
检查一下数据
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
自己拖拽三个框
在这里插入图片描述
直接拖进去
在这里插入图片描述
自己调整一下大小就可以保存了。
在这里插入图片描述
在这里插入图片描述
把得到的连接复制到浏览器即可使用。
在这里插入图片描述


总结

至此线上问诊离线数仓项目完成。可以考虑抓个快照。

相关文章:

线上问诊:可视化展示

系列文章目录 线上问诊:业务数据采集 线上问诊:数仓数据同步 线上问诊:数仓开发(一) 线上问诊:数仓开发(二) 线上问诊:数仓开发(三) 线上问诊:可视化展示 文章目录 系列文章目录前言一、全流程调度1.生产新…...

如何选择合适的HTTP代理服务器

HTTP代理服务器是一种常见的网络代理方式,它可以帮助用户隐藏自己的IP地址,保护个人隐私和安全。然而,选择合适的HTTP代理服务器并不容易,需要考虑多个因素。本文将介绍如何选择合适的HTTP代理服务器。 了解代理服务器的类型 HTT…...

Car Window Control Reset

大众汽车窗口自动升降失效,重置: 扣住5秒,重启汽车,试一下车钥匙,和再重试这个按钮,扣一下试一试...

序列号序列号

主板序列号 string str;str bios.GetSystemSerialNumber(); //wentai//str1 bios.GetSystemECSerialNumber();//CLogHelp::ITCLog(str1);LocalSN str.c_str();str bios.GetSystemVersion();LocalMode str.c_str();string str1;str1 bios.GetSystemSerialNumber();CLogHe…...

SSM(Spring-Mybatis-SpringMVC)

文章目录 1. 介绍1.1 概念介绍 2 SSM整合框架3. SSM功能模块开发4 测试4.1 业务层接口测试4.2 表现层接口测试 5.优化 -表现层数据封装6.异常处理 1. 介绍 1.1 概念介绍 SSM项目是指基于SpringSpringMVCMyBatis框架搭建的Java Web项目。 Spring是负责管理和组织项目的IOC容器和…...

MySQL——数据的删除以及MySQL中的约束

删除数据 删除表中的一行数据,也必须加上 WHERE条件,否则整列的数据都会被删除。删除语句: delete from 表名 where 条件; 他会将所有的符合条件的数据删除,如果不写条件,则表中的数据全部删除: 如果不添…...

静态路由 网络实验

静态路由 网络实验 拓扑图初步配置R1 ip 配置R2 ip 配置R3 ip 配置查看当前的路由表信息查看路由表信息配置静态路由测试 拓扑图 需求:实现 ip 192.168.1.1 到 192.168.2.1 的通信。 初步配置 R1 ip 配置 system-view sysname R1 undo info-center enable # 忽略…...

数据结构-01 数据结构基本概念,算法时间复杂度,空间复杂度

0 数据结构概述 四门课的关系 1 绪论 数据对象、数据元素、数据项关系 1.1 数据结构的基本概念 1.2 算法和算法评价 小练习 空间复杂度中的递归调用 n只是传入 n也是数组,计算存储数组flag的空间大小...

【Redis】Bitmap 使用及应用场景

前言:bitmap 占用空间小,查询效率高,在一些场景中使用 bitmap 是一个很好的选择。 一、bitmap 相关命令 SETBIT - 设置指定位置的比特值,可以设为 1 或 0 例如 SETBIT key 10 1,将在 key 对应的 bitmap 中第10位设置为…...

C#,数值计算——用于积分函数与方法的Stiel类的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { public class Stiel { public class pp : UniVarRealValueFun, RealValueFun { public Stiel st { get; set; } null; public pp() { } public doubl…...

报错:为什么数组明明有内容但打印的length是0

文章目录 一、问题二、分析三、解决1.将异步改为同步2.设置延迟 一、问题 在日常开发中,for 循环遍历调用接口,并将接口返回的值进行拼接,即push到一个新的数组中,但是在for循环内部是可以拿到这个新的数组,而for循环…...

go gin gorm连接postgres postgis输出geojson

go gin gorm连接postgres postgis输出geojson 1. 技术环境 go-gin-gorm postgres-postgis go vscode环境安装-智能提示配置 2. 简单实现代码 思路就是:采用原生sql实现查询、更新等,采用gorm的raw来执行sql语句 package mainimport ("fmt"&q…...

4. Java 的线程安全机制之`volatile`

前言:在多线程编程过程中,线程安全是一个非常重要的概念,它有助于保证多线程程序的正确性和健壮性。其中,volatile是实现线程安全的一种方式,保证内存的立马可见,下面将会详细介绍。 文章目录 是什么为什么…...

​Vue + Element UI前端篇(二):Vue + Element 案例 ​

Vue Element UI 实现权限管理系统 前端篇(二):Vue Element 案例 导入项目 打开 Visual Studio Code,File --> add Folder to Workspace,导入我们的项目。 安装 Element 安装依赖 Element 是国内饿了么公司提…...

Qt5中connect信号槽无效问题 C++

在写QT的组件信号槽时遇到一个问题&#xff0c;我的QspinBox组件用connect连接函数总是无效&#xff0c;解决办法是&#xff1a; 在QT5中推荐使用如下形式连接槽函数&#xff1a; QObject::connect(ui->spinBox,QOverload<int>::of(&QSpinBox::valueChanged),th…...

服务端 TCP 连接的 TIME_WAIT 过多问题的分析与解决

https://blog.csdn.net/zxlyx/article/details/120397006 本文给出一个 TIME_WAIT 状态的 TCP 连接过多的问题的解决思路&#xff0c;非常典型&#xff0c;大家可以好好看看&#xff0c;以后遇到这个问题就不会束手无策了。 问题描述 模拟高并发的场景&#xff0c;会出现批量…...

【Unity3D赛车游戏优化篇】【十】汽车粒子特效和引擎咆哮打造极速漂移

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;Uni…...

肖sir__设计测试用例方法之编写测试用例12

编写测试用例 一、用例模板 案例1&#xff1a; 案例2&#xff1a; 案例3&#xff1a; 二、测试工作重点&#xff1a; 编写测试用例、 执行用例 &#xff08;依据测试用例&#xff09; 三、测试流程&#xff08;h模型&#xff09; 1、拿到需求 2、编写测试计划&#xff08;…...

Android 11.0 ota升级之Systemui下拉状态栏quick_settings_tiles_default值减少时更新的功能实现

1.前言 在11.0的系统rom定制化开发中,在定制功能需求中,在进行systemui的下拉状态栏定制以后,当需要ota升级的时候,发现在systemui下拉状态栏的快捷功能键部分去掉的 一些快捷功能并没有减少,这是因为systemui有缓存造成的只有清理缓存或者恢复出厂设置后才正常,所以今天…...

Android Studio中创建java项目

1.创建普通的android工程 2.创建一个module 3.module类型选择java library 4.填写libary和class的名字 5.生成的工程如图所示 6.然后点击Run --- Edit Configurations... 选择Application选项 设置所需要的参数 选中myjavalib后点击OK。然后打开刚创建的lib的gradle 编辑gradl…...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python&#xff5c;GIF 解析与构建&#xff08;5&#xff09;&#xff1a;手搓截屏和帧率控制 一、引言 二、技术实现&#xff1a;手搓截屏模块 2.1 核心原理 2.2 代码解析&#xff1a;ScreenshotData类 2.2.1 截图函数&#xff1a;capture_screen 三、技术实现&…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风&#xff0c;以**「云启出海&#xff0c;智联未来&#xff5c;打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办&#xff0c;现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

Unit 1 深度强化学习简介

Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库&#xff0c;例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体&#xff0c;比如 SnowballFight、Huggy the Do…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)

引言 在人工智能飞速发展的今天&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;已成为技术领域的焦点。从智能写作到代码生成&#xff0c;LLM 的应用场景不断扩展&#xff0c;深刻改变了我们的工作和生活方式。然而&#xff0c;理解这些模型的内部…...

android13 app的触摸问题定位分析流程

一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...