线上问诊:可视化展示
系列文章目录
线上问诊:业务数据采集
线上问诊:数仓数据同步
线上问诊:数仓开发(一)
线上问诊:数仓开发(二)
线上问诊:数仓开发(三)
线上问诊:可视化展示
文章目录
- 系列文章目录
- 前言
- 一、全流程调度
- 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的组件信号槽时遇到一个问题,我的QspinBox组件用connect连接函数总是无效,解决办法是: 在QT5中推荐使用如下形式连接槽函数: QObject::connect(ui->spinBox,QOverload<int>::of(&QSpinBox::valueChanged),th…...
服务端 TCP 连接的 TIME_WAIT 过多问题的分析与解决
https://blog.csdn.net/zxlyx/article/details/120397006 本文给出一个 TIME_WAIT 状态的 TCP 连接过多的问题的解决思路,非常典型,大家可以好好看看,以后遇到这个问题就不会束手无策了。 问题描述 模拟高并发的场景,会出现批量…...
【Unity3D赛车游戏优化篇】【十】汽车粒子特效和引擎咆哮打造极速漂移
👨💻个人主页:元宇宙-秩沅 👨💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨💻 本文由 秩沅 原创 👨💻 收录于专栏:Uni…...
肖sir__设计测试用例方法之编写测试用例12
编写测试用例 一、用例模板 案例1: 案例2: 案例3: 二、测试工作重点: 编写测试用例、 执行用例 (依据测试用例) 三、测试流程(h模型) 1、拿到需求 2、编写测试计划(…...
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…...
冠达管理:“旺季”来临,煤炭板块走高,云煤能源、陕西黑猫涨停
煤炭板块1日盘中发力走高,截至发稿,云煤动力、陕西黑猫涨停,兖矿动力涨超7%,晋控煤业、华阳股份涨超6%,山西焦煤、平煤股份涨超5%。 组织表明,动力大通胀背景下,未来3-5年煤炭供需偏紧的格局仍…...
【EI检索】第四届公共卫生与数据科学国际学术研讨会(ICPHDS 2023)
第四届公共卫生与数据科学国际学术研讨会(ICPHDS 2023) 2023 4th International Conference on Public Health and Data Science(ICPHDS 2023) 第四届公共卫生与数据科学国际学术研讨会(ICPHDS 2023)将于…...
对时序数据进行分类与聚类
我在最近的工作中遇到了一个问题,问题是我需要根据银行账户在一定时间内的使用信息对该账户在未来的一段时间是否会被销户进行预测。这是一个双元值的分类问题,只有两种可能,即会被销户和不会被销户。针对这个问题一般来说有两种解决策略。 …...
Win10如何找回图片查看器
近期有小伙伴反映在将Win10升级之后发现电脑自带的图片查看器没有了,这是怎么回事,该怎么找回呢,下面小编就给大家详细介绍一下Win10找回图片查看器的方法,有需要的小伙伴快来和小编一起阅读看看吧。 win10找回windows照片查看器…...
【脑机接口】基于运动想象的康复指导在脑卒中偏瘫患者中的应用
【摘要】 目的 探讨运动想象康复指导对脑卒中偏瘫患者的康复效果及意义。 方法 将 60例脑卒中偏瘫患者随机分为观察组(n31)和对照组(n29),对照组的康复训练指导采用讲解示范法,观察组采用运动想象法 。比较两组 患者 的运 动功能 、日常生活 活动能力及 …...
vue-cli中vuex下$store”未在实例上定义
这里写目录标题 一、版本的问题二、vuex中的代码 一、版本的问题 vuex版本不对,获取不到store,vue默认vue3版本,vuex默认vuex4版本,vuex4只能在vue3中使用,在vue2中能使用vuex3,那么不能默认下载最新的版本 npm instal…...
AutoSAR配置与实践(实践篇)12.1 BSW WatchDog功能的配置和实现
AutoSAR配置与实践(实践篇)12.1 BSW WatchDog功能的配置和实现 BSW WatchDog功能的配置和实现一、Wdg监控需求二、WdgM状态管理原理2.1 WdgM状态管理中的配置项和层次关系2.2 SE 本地状态(Local Status)管理2.3 全局状态(Global Status)管理三、Alive/ Deadline/ Program Flo…...
【UI自动化测试】Jenkins配置
前一段时间帮助团队搭建了UI自动化环境,这里将Jenkins环境的一些配置分享给大家。 背景: 团队下半年的目标之一是实现自动化测试,这里要吐槽一下,之前开发的测试平台了,最初的目的是用来做接口自动化测试和性能测试&…...
C#使用DataTable的Select方法来选择特定的字段
在C#中,可以使用DataTable的Select方法来选择特定的字段。要选择特定的字段,可以使用Select方法的参数来指定要返回的列的名称,然后将结果存储在一个新的DataTable中。以下是一个示例: using System; using System.Data; class …...
总结梳理HTTP状态码
前端开发中和后端联调时总会遇到一些状态码的问题,本文用于介绍一些常见的状态码,以及遇到这些状态码应该如何进行排查。 400 Bad Request - 请求无效。 表示客户端发送的请求存在语法错误,服务器无法理解或处理该请求的语法或参数。这通常…...
移动网站建设的前景/seo推广宣传
可以使用cacti、nagios等监控程序监控nginx服务器,不过有时候不用那么复杂,用nginx-rrd就能完成连接、请求的监控功能。 首先编译安装nginx,注意加载stub_status模块,Nginx中的stub_status模块主要用于查看Nginx的一些状态信息. 本…...
建设工程合同属于专属管辖吗/拼多多关键词优化步骤
第一 找到你要添加的jar包的路径,并复制这个路径 第二 winr,输入cmd然后打开cmd: 第三 输入以下格式:mvn install:install-file -DfileC:***\mail.jar -DgroupIdcom.demowar -DartifactIdtest -Dversion1.0.0 -Dpackagingjar 上面的C:***\mail.jar是自己…...
住房和城乡建设委网站/百度客服号码
一、 请问你是如何做接口测试的? 大体来说,经历以下过程:接口需求调研、接口测试工具选择、接口测试用例编写、接口测试执行、接口测试回归、接口测试自动化持续集成。具体来说,接口测试流程分成以下九步: 第一步&am…...
有趣的个人网站/外贸推广建站
NAT原理与NAT穿透 原创大鞭炮好大 发布于2019-02-26 14:22:56 阅读数 92 收藏 展开 分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.…...
网页设计就业/企业关键词优化公司
2019独角兽企业重金招聘Python工程师标准>>> 基本思路:通过一个队列保存最近10次的登录记录,下一次登录请求来时,通过与队列中的第一条进行比较,如果在1分钟之内则拒绝请求,否则移除队首元素,将…...
免费外贸网站/cdq百度指数
一般程序写的爬虫程序都会自带请求头,不知不觉就被网站拒绝了,请求之前可以看看自己的请求头是什么,确保不被禁 地址:https://httpbin.org/ 如果网站太慢打不开,想在本地搭建测试环境,可以在docker环境下…...