黑马一站制造数仓实战1

2023-12-05 10:01

本文主要是介绍黑马一站制造数仓实战1,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 项目目标
一站制造
企业中项目开发的落地:代码开发
代码开发:SQL【DSL + SQL】
SparkCore
SparkSQL
数仓的一些实际应用:分层体系、建模实现
2. 内容目标
项目业务介绍:背景、需求
项目技术架构:选型、架构
项目环境测试

实施
项目行业:工业大数据
项目名称:加油站服务商数据运营管理平台
中石化,中石油,中海油、壳牌,道达尔……

整体需求
基于加油站的设备安装、维修、巡检、改造等数据进行统计分析
支撑加油站站点的设备维护需求以及售后服务的呼叫中心数据分析
提高服务商服务加油站的服务质量
保障零部件的仓储物流及供应链的需求
实现服务商的所有成本运营核算

具体需求
运营分析:呼叫中心服务单数、设备工单数、参与服务工程师个数、零部件消耗与供应指标等
设备分析:设备油量监控、设备运行状态监控、安装个数、巡检次数、维修次数、改造次数
呼叫中心:呼叫次数、工单总数、派单总数、完工总数、核单次数
员工分析:人员个数、接单次数、评价次数、出差次数
报销统计分析、仓库物料管理分析、用户分析

报表

8ee5ceee3cd745c39159a8667a6bac55.png
项目具体需求
提高服务质量,做合理的成本预算
需求一:对所有工单进行统计分析
安装工单、维修工单、巡检工单、改造工单、回访分析
需求二:付费分析、报销分析
安装人工费用、安装维修材料费用、差旅交通费用

加油站设备维护的主要业务流程

a74c1e541ad14c309e65b3ab46093077.png

step1:加油站服务商联系呼叫中心,申请服务:安装/巡检/维修/改造加油机
step2:呼叫中心联系对应服务站点,分派工单:联系站点主管,站点主管分配服务人员
step3:服务人员确认工单和加油站点信息
step4:服务人员在指定日期到达加油站,进行设备检修
step5:如果为安装或者巡检服务,安装或者巡检成功,则服务完成
step6:如果为维修或者改造服务,需要向服务站点申请物料,物料到达,实施结束,则服务完成
step7:服务完成,与加油站站点服务商确认服务结束,完成订单核验
step8:工程师报销过程中产生的费用
step9:呼叫中心会定期对该工单中的工程师的服务做回访
小结
掌握加油站设备维护的主要业务流程
工单分析、费用分析、物料分析、回访分析 

技术选型
目标:掌握加油站服务商数据运营平台的技术选型
实施
数据生成:业务数据库系统
Oracle:工单数据、物料数据、服务商数据、报销数据等
数据采集
Sqoop:离线数据库采集
数据存储
Hive【HDFS】:离线数据仓库【表】
数据计算
SparkCore:类MR开发方式【写代码调用方法函数来处理:面向对象 + 面向函数】
对非结构化数据进行代码处理
场景:ETL
SparkSQL:类HiveSQL开发方式【面向表】
对数据仓库中的结构化数据做处理分析

场景:统计分析
开发方式
DSL:使用函数【DSL函数 + RDD函数】
SQL:使用SQL语句对表的进行处理
功能:离线计算 + 实时计算
注意:SparkSQL可以解决所有场景的分布式计算,离线计算的选型不仅仅是SparkSQL
SparkSQL/Impala/Presto
使用方式
Python/Jar:spark-submit
ETL
ThriftServer:SparkSQL用于接收SQL请求的服务端,类似于Hive的
Hiveserver2
PyHive :Python连接SparkSQL的服务端,提交SQL语句
JDBC:Java连接SparkSQL的服务端,提交SQL语句
spark-sql -f :运行SQL文件,类似于hive -f
beeline:交互式命令行,一般用于测试
数据应用
MySQL:结果存储
Grafana:数据可视化工具
监控工具
Prometheus:服务器性能指标监控工具
调度工具
AirFlow:任务流调度工具
技术架构

c61ebc1ed8de4277896ac136437d49ec.png

小结
本次项目的技术架构是什么?
Lambda架构:离线计算层 + 实时计算层 + 数据服务层
项目中用到了哪些技术?
数据生成:Oracle
数据采集:Sqoop
数据存储:Hive
数据处理:SparkSQL
数据应用:MySQL + Grafana
数据监控:Prometheus
任务调度:AirFlow
版本控制:Git + Gitee
资源容器:Docker

Docker的介绍

Docker是一个开源的应用容器引擎,使用GO语言开发,基于Linux内核的cgroup,namespace,Union FS等技术,对应用程序进行封装隔离,并且独立于宿主机与其他进程,这种运行时封装的状态称为容器。

目标
提供简单的应用程序打包工具
开发人员和运维人员职责逻辑分离
多环境保持一致性,消除了环境差异
功能:“Build,Ship and Run Any App,Anywhere”
通过对应用组件的封装,分发,部署,运行等生命周期的管理,达到应用组件级别的一次封装,多次分发,到处部署

b582b779d6f246258bbca221117783bd.png

组成
宿主机:安装Docker的那台实际的物理机器
docker client 【客户端】:用于连接服务端,提交命令给服务端

#拉取镜像
docker pull ……
#启动容器
docker run ……
#进入容器
docker exec ……
#查看容器
docker ps ……

docker daemon【服务端】:用于接收客户端请求,实现所有容器管理操作
docker image【镜像】:用于安装APP的软件库,简单点理解为软件的安装包
docker container 【容器】:用于独立运行、隔离每个APP的单元,相当于每个独立的Linux系统

Docker的网络

Docker的本质在一个操作上虚拟了多个操作系统出来,那每个操作之间如何进行网络通信

模式
host模式:每个虚拟系统与主机共享网络,IP一致,用不同端口区分不同虚拟系统

4691ed6b101a4232ada4218c3a088919.png

container模式:第一个容器构建一个独立的虚拟网络,其他的容器与第一个容器共享网络

2b9b8ce2f0064104a2e6fc4427007679.png

none模式:允许自定义每个容器的网络配置及网卡信息,每个容器独立一个网络

77df5c09a694483b871b848daa599890.png

bridge模式:构建虚拟网络桥,所有容器都可以基于网络桥来构建自己的网络配置

55e70c2fb11e48dd878ca98a117d6452.png

本次项目中使用bridge模式,类似于VM中的Net模式使用

# 创建
docker network create --subnet=172.33.0.0/24 docker-bd0 1
# 查看模式
docker network ls 1
# 删除
docker network rm ……

Docker的使用

Docker管理

# 启动服务
systemctl start docker 1
# 查看状态
systemctl status docker 1
# 关闭服务
systemctl stop docker

image管理

添加镜像
docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g 1
列举镜像
docker images 1
移除镜像
docker rmi ……

container管理

# 创建并启动container run = create + start
docker run --net docker-bd0 --ip 172.33.0.100 -d -p 1521:1521 --name oracle 3fa112fd3642
# 列举container
#列举所有的
docker ps -a
#列举正在运行的
docker ps
# 进入container
docker exec -it Name bash
# 退出container
exit
# 删除container
docker rm ……

集群软件规划 

9c3acda4a16a41f9ab9a3a0b5248455b.png

Shuffle【分区、排序、分组】三种场景
重分区:repartition:分区个数由小变大
调用分区器对所有数据进行重新分区
rdd1
part0:1 2 3
part1: 4 5 6
rdd2:调用分区器【只有shuffle阶段才能调用分区器】
part0:0 6
part1:1 4
part2:2 5
全局排序:sortBy
part0:1 2 5
part1: 4 3 6
方案:将所有数据放入磁盘
实现:对数据做了范围分区:将所有数据做了采样:4
part0:6 5 4
part1:3 2 1
全局分组:groupBy,reduceByKey 

 

这篇关于黑马一站制造数仓实战1的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/457109

相关文章

Golang操作DuckDB实战案例分享

《Golang操作DuckDB实战案例分享》DuckDB是一个嵌入式SQL数据库引擎,它与众所周知的SQLite非常相似,但它是为olap风格的工作负载设计的,DuckDB支持各种数据类型和SQL特性... 目录DuckDB的主要优点环境准备初始化表和数据查询单行或多行错误处理和事务完整代码最后总结Duck

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1

Golang使用minio替代文件系统的实战教程

《Golang使用minio替代文件系统的实战教程》本文讨论项目开发中直接文件系统的限制或不足,接着介绍Minio对象存储的优势,同时给出Golang的实际示例代码,包括初始化客户端、读取minio对... 目录文件系统 vs Minio文件系统不足:对象存储:miniogolang连接Minio配置Min

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

网页解析 lxml 库--实战

lxml库使用流程 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 XPath表达式提供了良好的支 持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 pip install lxml lxm| 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面来介绍一下 lxml 库

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

滚雪球学Java(87):Java事务处理:JDBC的ACID属性与实战技巧!真有两下子!

咦咦咦,各位小可爱,我是你们的好伙伴——bug菌,今天又来给大家普及Java SE啦,别躲起来啊,听我讲干货还不快点赞,赞多了我就有动力讲得更嗨啦!所以呀,养成先点赞后阅读的好习惯,别被干货淹没了哦~ 🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!! 环境说明:Windows 10

springboot实战学习(1)(开发模式与环境)

目录 一、实战学习的引言 (1)前后端的大致学习模块 (2)后端 (3)前端 二、开发模式 一、实战学习的引言 (1)前后端的大致学习模块 (2)后端 Validation:做参数校验Mybatis:做数据库的操作Redis:做缓存Junit:单元测试项目部署:springboot项目部署相关的知识 (3)前端 Vite:Vue项目的脚手架Router:路由Pina:状态管理Eleme

深度学习实战:如何利用CNN实现人脸识别考勤系统

1. 何为CNN及其在人脸识别中的应用 卷积神经网络(CNN)是深度学习中的核心技术之一,擅长处理图像数据。CNN通过卷积层提取图像的局部特征,在人脸识别领域尤其适用。CNN的多个层次可以逐步提取面部的特征,最终实现精确的身份识别。对于考勤系统而言,CNN可以自动从摄像头捕捉的视频流中检测并识别出员工的面部。 我们在该项目中采用了 RetinaFace 模型,它基于CNN的结构实现高效、精准的