黑马一站制造数仓实战1

2023-12-04

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

黑马一站制造数仓实战1 的相关文章

  • openpyxl 2.4.2:保存后公式生成的单元格值为空

    我使用 openpyxl 打开文件 编辑一些单元格并保存更改 这是一个例子 import openpyxl book openpyxl load workbook sheet path sheet book active for row i
  • 在 Django 中定义视图和 url。为什么调用函数时不使用括号?

    我已经在经历 Python速成课程 目前正在进行 Django Web应用程序项目 学习日志 阶段 有些东西与我已经学到的相矛盾 views py file from django shortcuts import render def i
  • 如何屏蔽 PyTorch 权重参数中的权重?

    我正在尝试在 PyTorch 中屏蔽 强制为零 特定权重值 我试图掩盖的权重是这样定义的def init class LSTM MASK nn Module def init self options inp dim super LSTM
  • 打印 scrapy 请求的“响应”

    我正在尝试学习 scrapy 在遵循教程的同时 我正在尝试进行细微的调整 我想简单地从请求中获取响应内容 然后我会将响应传递到教程代码中 但我无法发出请求并获取响应内容 建议就好 from scrapy http import Respon
  • 在 Python 中使用 XPath 和 LXML

    我有一个 python 脚本 用于解析 XML 并将某些感兴趣的元素导出到 csv 文件中 我现在尝试更改脚本以允许根据条件过滤 XML 文件 等效的 XPath 查询将是 DC Events Confirmation contains T
  • 替换字符串列表中的 \x00 的最佳方法?

    我有一个来自已解析 PE 文件的值列表 其中包括 x00每个部分末尾的空字节 我希望能够删除 x00字符串中的字节而不删除所有字节 x 文件中的 s 我试过做 replace and re sub 但并没有取得太大成功 使用Python 2
  • 如何使用pycaffe重构caffe网络

    我想要的是 加载网络后 我将分解一些特定的图层并保存新的网络 例如 原网 数据 gt conv1 gt conv2 gt fc1 gt fc2 gt softmax New net 数据 gt conv1 1 gt conv1 2 gt c
  • 如何更改充当按钮的范围的文本

    我正在为自定义 Web 应用程序编写自动化测试 我遇到了无法更改跨度文本的问题 我尝试过使用 driver execute script 但没有运气 如果我更好地了解 javascript 这确实会有帮助 据我所知 您无法单击跨度 并且列表
  • Python 中 genfromtxt() 的可变列数?

    我有一个 txt具有不同长度的行的文件 每一行都是代表一条轨迹的一系列点 由于每条轨迹都有自己的长度 因此各行的长度都不同 也就是说 列数从一行到另一行不同 据我所知 genfromtxt Python 中的模块要求列数相同 gt gt g
  • Python3 查找 2 个列表中有多少个差异才能相等

    假设我们有 2 个列表 always具有相同的长度和always包含字符串 list1 sot sot ts gg gg gg list2 gg gg gg gg gg sot 我们需要找到 其中有多少项list2应该改变 以便它等于lis
  • 将一个时间序列插入到 pandas 中的另一个时间序列中

    我有一组定期测量的值 说 import pandas as pd import numpy as np rng pd date range 2013 01 01 periods 12 freq H data pd Series np ran
  • VSCode pytest 测试发现失败

    Pytest 测试发现失败 用户界面指出 Test discovery error please check the configuration settings for the tests 输出窗口显示 Test Discovery fa
  • Python 中的这种赋值方式叫什么? a = b = 真

    我知道关于元组拆包 http docs python org tutorial datastructures html tuples and sequences但是当一行中有多个等号时 这个赋值被称为什么 阿拉a b True 它总是让我有
  • 字典中列表中仅有的几个索引的总和

    如果我有这种类型的字典 a dictionary dog white 3 5 black 6 7 Brown 23 1 cat gray 5 6 brown 4 9 bird blue 3 5 green 1 2 yellow 4 9 mo
  • ValueError:无法插入 ID,已存在

    我有这个数据 ID TIME 1 2 1 4 1 2 2 3 我想按以下方式对数据进行分组ID并计算每组的平均时间和规模 ID MEAN TIME COUNT 1 2 67 3 2 3 00 1 如果我运行此代码 则会收到错误 ValueE
  • 在谷歌C​​olab中使用cv2.imshow()

    我正在尝试通过输入视频来对视频进行对象检测 cap cv2 VideoCapture video3 mp4 在处理部分之后 我想使用实时对象检测来显示视频 while True ret image np cap read Expand di
  • 在pycharm中调试python代码

    这个问题类似于this https stackoverflow com questions 10240018 how to use pycharm to debug python script一 我正在尝试调试pyethapp https
  • Python模块单元测试的最佳文件结构组织?

    遗憾的是 我发现有太多方法可以在 Python 中保存单元测试 而且它们通常没有很好的文档记录 我正在寻找一种 终极 结构 它可以满足以下大部分要求 be discoverable by test frameworks including
  • Scrapy 蜘蛛无法工作

    由于到目前为止没有任何效果 我开始了一个新项目 python scrapy ctl py startproject Nu 我完全按照教程操作 创建了文件夹和一个新的蜘蛛 from scrapy contrib spiders import
  • 从 dask 数据框中的日期时间序列获取年份和星期?

    如果我有一个 Pandas 数据框和一个日期时间类型的列 我可以按如下方式获取年份 df year df date dt year 对于 dask 数据框 这是行不通的 如果我先计算 像这样 df year df date compute

随机推荐

  • 国内传统企业数字化转型升级,有哪些成功案例?

    近年来 涌现出了很多使用 零代码平台撬动一线业务管理效率 的案例 比如 山东滨州长山镇政府 仅用 3小时 搭建出监管平台 成功助力辖区 300 企业 返岗复工 纳曲酒业 搭建市场费用和订单联动管控平台 解决了盲目市场投入大 资源投入与产出不
  • 清华大学有哪些计算机er可以选择的院系?

    写在前面 清华大学作为国内顶尖院校 无疑是广大学子的梦想高校 目前 清华大学已经设有21个学院 59个系 那么 在这样广泛多元的学院和系中 可供计算机保研er们选择有哪些院系呢 01 项目盘点 开篇我们 先来盘点一下清华大学中计算机保研er
  • Android程序员面临工作焦虑怎么办?

    每个人都可能在职业生涯中遇到类似的问题 在公司工作一段时间后 每天的工作内容变得轻松 此时公司领导可能会认为你每天无所事事 开始寻找薪资较低的替代者 我的一个朋友就是这样的 普通本科的学历 去年6月份进的大厂 刚刚开始的时候因为不熟悉工作
  • 华为OD机试 Python【电梯序列】

    题目 你进入了一座奇怪的大厦 为了从0楼到达你想去的楼层 你需要按照一些特殊的规则操作电梯 你得到了一个数字序列 每个数字代表你可以上升或下降的楼层数 你的第一个操作必须是上升 接下来的每次操作方向都得和前一次相反 你需要使用数字序列中的每
  • torch中的随机数种子

    如何在torch生成随机数时 设置随机种子 要求每次调用生成的随机数都一样 在 PyTorch 中 可以使用 torch manual seed seed 函数设置随机种子 以确保每次运行代码时生成的随机数都一样 以下是一个示例代码 展示了
  • 课程资料|《复变函数》第四版 电子版教材+课后答案!

    写在前面 学习成绩 不管是是保研 考研 出国留学 还是找实习找工作 都是你极为重要的支撑 为了帮助同学们 更好地学习专业课 斩获高绩点 岛主将持续 推出CS相关的专业教材资料 希望同学们能够在接下来的学习生活中取得良好的成绩 今天为大家带来
  • 抖音达人信息采集八爪鱼RPA机器人

    RPA robotic process automation 是一种自动化技术 通过使用软件机器人模拟和执行人类用户的操作 自动完成重复 繁琐的任务 提高工作效率和准确性 rpa技术可以广泛应用于各个行业 帮助企业节省人力资源和时间成本 提
  • 面试简历的最后一道坎,实战项目经验详解

    日常猫猫缓解气氛 说起面试 实战项目经验一定是面试官问的重中之重 原因无外乎以下几点 一 面试官问项目经验的目的 通过你做的项目来判断你的专业技能 资历段位 成绩表现与简历或自我介绍中描述的是否一致 通过你对项目细节的描述 看看你是否能够独
  • 淘宝天猫商品评论采集,用rpa机器人轻松解决!

    电商行业是目前发展非常迅速的行业 淘宝天猫作为国内最大的电商平台之一 商品评论对于商家来说非常重要 商品评论可以反映出产品的好坏和用户的购买体验 是用户决策的重要参考因素 商品评论的采集对于商家来说非常重要 然而 手动采集大量评论数据耗时耗
  • 钛氧物种与钴相互作用-科学指南针

    中科院与上海交通大学合作 在碳化物作为载体的钴基费托合成研究中取得新进展 借助透射电子显微镜等技术 揭示了还原过程中碳化钛表面的钛氧物种到金属钴表面的原位迁移现象 这种增强的金属 载体的相互作用促进了费托合成反应活性 通过透射电子显微镜可以
  • 人工智能与大数据专业毕设选题汇总 最新版

    目录 前言 毕设选题 选题迷茫 选题的重要性 更多选题指导 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精力 近几年各个学校要求的毕设项目越来越难 有不少课题是研究生
  • cuda 在 torch神经网络中哪些地方可以用?

    简言之 3部分 1 数据data可以放在GPU上 2 网络net可以放在GPU上 3 损失函数loss可以放在GPU上 CUDA可以用于在torch神经网络中进行GPU加速计算 包括模型的训练和推理过程 具体来说 可以使用CUDA加速以下操
  • 一个简单的参数帮助框架,c实现

    文章目录 具体实现如下 include
  • RUM增强APP端快照配置全量会话回放与自定义协议网络请求采集功能

    一直以来 博睿数据秉承着 让每一款软件运行更完美 的产品理念 注重用户体验和反馈 以持续的技术创新 为广大用户提供轻盈 有序 精准的IT运维一体化智能可观测平台 降低运维成本 近期 博睿数据根据一体化智能可观测平台 Bonree ONE 产
  • 牛掰!《鸿蒙零基础入门学习指南》重磅来袭

    前言 不久前 华为开发者大会2023 宣布不再兼容安卓 同时宣布了 鸿飞计划 余承东承诺再投入超百亿元 以扶持和打造鸿蒙生态 鸿蒙不再兼容安卓 欲与iOS 安卓在市场三分天下 这对中国国产操作系统而言 具有划时代的意义 近期 美团 网易 微
  • Windows下环境配置Cmake、MinGW、OpenCV

    一 安装Cmake 1 选择自己需要下载的版本 下载地址 gt https github com Kitware CMake releases download v3 26 5 cmake 3 26 5 windows x86 64 msi
  • 前阿里P6花七天时间整理地方软件测试基础知识,高手请绕道

    可以说软件测试所学习的知识都是在循序渐进的 从更基础的知识逐渐延伸到困难的知识 由此可以看出 基础知识是这些重难点知识延伸的基础 想要升职加薪 基础知识必须牢靠 一 软件测试概述 1 软件缺陷 软件缺陷 又称之为 Bug 即计算机软件或程序
  • 制造业如何做生产设备管理、分析生产数据?

    本文将为大家讲解 1 设备管理的现状与问题 2 设备管理系统功能 3 制造业企业如何做生产设备管理 分析生产数据 4 制造业设备管理的价值 想要管理好设备 设备档案管理 巡检 报修 保养 分析预警等问题都是必须要考虑的 我们公司正是使用了设
  • 介绍kfold.split()的详细用法

    KFold 是交叉验证中的一种方法 其可以将数据集划分为 K 份 然后使用其中一份作为验证集 剩下的 K 1 份作为训练集 这个过程可以重复 K 次 以便每个子集都被用作验证集 KFold split 是 KFold 类中的一个方法 用于将
  • 黑马一站制造数仓实战1

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