# 车流量监控
## 前言
目的
1.对业务场景抽象,熟练Spark编码
2.增加自定义累加器,自定义UDF
3.Spark 优化方式
项目
数据处理架构
## 模块介绍
* 卡扣流量分析 Spark Core
* 卡扣车流量转化率 Spark Core
* 各区域车流量最高top5的道路统计 SparkSQL
* 稽查布控,道路实时拥堵统计 SparkStreaming
## hive表
`monitor_flow_action`表
– date 日期 天
– monitor_id 卡口号
– camera_id 摄像头编号
– car 车牌
– action_time 某个摄像头拍摄时间 s
– speed 通过卡扣的速度
– road_id 道路id
– area_id 区域ID
`monitor_camera_info`表 某一个卡扣对应的摄像头编号
– monitor_id:卡扣编号
– camera_id:摄像头编号
数据加载hive中
1). 创建表,加载数据load data `Data2File`
> hive -f createHiveTab.sql
2). 集群中提交spark作业,使用代码生成到hive `Data2Hive`
## 大数据开发流程
* 数据调研(对底层的数据的表结构进行调研,分析和研究)
* 需求分析(与PM讨论需求,画原型图 axure)
* 基于讨论出来的结果做出技术方案(某个难点用什么技术,数据库选型)
* 具体实施
## 功能点
* 根据使用者(平台使用者)指定的某些条件,筛选出指定的一批卡扣信息(比如根据区域、时间筛选)
* 检测卡扣状态,对于筛选出来的所有的卡口(不代表一个摄像头)信息统计
• 卡口正常数
• 异常数
• camera的正常数
• camera的异常数
• camera的详细信息( monitor_id:camera_id)
* 车流量最多的TonN卡扣号
• 获取每一个卡扣的详细信息( Top5 )
* 随机抽取N个车辆信息,对这些数据可以进行多维度分析(因为随机抽取出来的N个车辆信息可以很权威的代表整个
区域的车辆)
* 计算出经常高速通过的TopN卡口 (查看哪些卡扣经常被高速通过,高速,中速,正常,低速 根据三个速度段进行四
次排序,高速通过的车辆数相同就比较中速通过的车辆数,以此来推)
* 跟车分析
## 需求分析
### 按条件筛选卡扣信息
• 可以指定 不同的条件,时间范围、区域范围、卡扣号等 可以灵活的分析不同区域的卡扣信息
### 监测卡扣状态
• 对符合条件的卡扣信息,可以动态的检查每一个卡扣的状态,查看卡扣是否正常工作,也可以查看摄像头
### 车流量最多的TonN卡扣
• 查看哪些卡扣的车流量最高,为什么会出现这么高的车流量。分析原因,例如今天出城的车辆非常多,啥原因,今天进
城的车辆非常多,啥原因? 要造反? 这个功能点里面也会拿到具体的车辆的信息,分析一下是京牌车造成的还是外地
车牌?
### 在符合条件的卡扣信息中随机抽取N个车辆信息
• 随机抽取N辆车的信息,可以权威的代表整个区域的车辆,这时候可以分析这些车的轨迹,看一下在不同的时间点车辆
的流动方向。以便于道路的规划。
### 计算出经常高速通过的TopN卡口
• 统计出是否存在飙车现象,或者经常进行超速行驶,可以在此处安装违章拍摄设备
### 跟车分析
• 计算出所有车是否被跟踪过,然后将结果存储在MySQL中,以便后期进行查询
## 项目分析
monitor_flow_action 监控数据表
monitor_camera_info 卡扣与摄像头基本关系表
### 1.卡扣监控
#### 统计: 正常的卡扣个数,异常的卡扣个数,正常的摄像头个数,异常的摄像头个数,异常的摄像头详细信息
#### 正常卡扣个数:
monitor_camera_info 基本关系表中卡扣与摄像头的关系与在monitor_flow_action 监控数据表 中,卡扣与摄像头的关系完全对应上
0001:11111,22222
0001 11111 xxx
0001 22222 xxx
RDD思路-正常的卡扣数为例:
monitor_flow_action表 -> RDD<Monitor_id,Camera_id> -> RDD<Monitor_id,[camera_ids]> - RDD<Monitor_id,camera_ids>
monitor_camera_info表 -> RDD<Monitor_id,Camera_id> -> RDD<Monitor_id,[camera_ids]>
#### 异常的卡扣个数:
1.monitor_camera_info 基本关系表中 卡扣 与摄像头的关系,在监控的数据表中 一条都没有对应。
2.monitor_camera_info 基本关系表中 卡扣 与摄像头的关系,在监控的数据表中 部分数据有对应。
#### 正常的摄像头个数:
#### 异常的摄像头个数:
#### 异常的摄像头详细信息:0001:11111,22222,33333
~0004:76789,27449,87911,61106,45624,37726,09506
~0001:70037,23828,34361,92206,76657,26608
~0003:36687,99260,49613,97165
~0006:82302,11645,73565,36440
~0002:60478,07738,53139,75127,16494,48312
~0008:34144,27504,83395,62222,49656,18640
~0007:19179,72906,55656,60720,74161,85939,51743,40565,13972,79216,35128,27369,84616,09553
~0000:67157,85327,08658,57407,64297,15568,31898,36621
~0005:09761,12853,91031,33015,52841,15425,45548,36528
#### 注意:
求个数: 累加器实现(并行 分布式)
异常的摄像头信息,用累加器实现,无非拼的是字符串
更新累加器与take使用时,take算子可以触发多个job执行,可以造成累加器重复计算。
./spark-submit --master spark://node1:7077,node2:7077 --jars ../lib/fastjson-1.2.11.jar,../lib/mysql-connector-java-5.1.6.jar --class MonitorFlowAnalyze ../lib/Test.jar 1
~0001:13846,54785,51995,64341,45994,32228,82054,87746
~0003:38780,08844,03281,07183,50318,87000,16722,11604,26508,45523,46380
~0007:61833,19140,38387
~0005:63920,23464,37389,01219,96765,24844,32101,24141~
~0004:60778,35444,35403,68811,73819,81893
~0006:09621,67028,96375,60036,91237,53743,10305
~0002:24694,01172,25945,79625,83215,72235,26855
~0008:24630,40432,96808,78708,28294
~0000:68070,12865,49505,26035,36931,38053,91868
### 2.通过车辆数最多的topN卡扣
### 3.统计topN卡扣下经过的所有车辆详细信息
### 4.车辆通过速度相对比较快的topN卡扣
车速:
120=<speed 高速
90<=speed<120 中速
60<=speed<90 正常
0<speed<60 低速
### 5.卡扣“0001”下所有车辆轨迹
1.过滤日期范围内 卡扣“0001”下 有哪些车辆?
2.过滤日期范围内 这些车辆经过卡扣的时间,按照时间升序排序
### 6.车辆碰撞
01,02中这一天同时出现的车辆
01:(car,row) 02:(car,row)
(car,row).join(car,row)
01:car 02:car
car02.intersection(car02)
### 7.随机抽取车辆
在一天中要随机抽取100辆车,抽取的车辆可以权威代表当天交通运行情况。
假如这天一共有10000辆车,要随机抽取100辆车:
sample(true,0.1,seed)
00~01 100 100/10000*100 = 1
01~02 100 1
02~03 100 1
04~05 200 2
05~06 200 2
06~07 300 3
08~09 500 5
09~10 200 2
10~11 200 2
11~12 300 3
12~13 500 5
13~14 700 7
。。
。。
。。
### 8.卡扣流量转换率
卡扣流量转换率,是指车辆运行连续卡口的转换率
如:一车辆经过卡口的轨迹为:0001,0002,0004,0001,0002,0003,0001,0002。
0001,0002:卡扣0001到卡扣0002的转换率为:经过卡扣0001,又经过卡扣0002的次数/经过卡扣0001的次数,针对上面的例子,
经过卡口0001的次数为:3次,经过卡口0001,又经过卡口0002的次数为:3次,那么卡扣0001到卡扣0002的转换率为:3/3=100%,同理:
0001,0002,0003 代表卡扣0001,0002到卡扣0003的转换率。
0001,0002,0003,0004代表卡扣0001,0002,0003到卡扣00004的转换率。
`MonitorOneStepConvertRateAnalyze.java`
一辆车的轨迹:
0001->0002->0003->0001->0002->0004->0005->0001
0001,0002----卡扣0001到卡扣0002 的车流量转化率:通过卡扣0001又通过卡扣0002的次数/通过卡扣0001的次数 2/3
0001,0002,0003 ---- 卡扣0001,0002到0003的车辆转换率:通过卡扣0001,0002,0003的次数 /通过�
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
大数据-大数据分析项目之卡扣车流量监控.zip (105个子文件)
Spark调优.docx 394KB
MonitorFlowAnalyze.java 62KB
RandomExtractCars.java 25KB
AreaTop3RoadFlowAnalyze.java 16KB
MonitorOneStepConvertRateAnalyze.java 14KB
RoadRealTimeAnalyze.java 12KB
WithTheCarAnalyze.java 11KB
MonitorCarTrack.java 10KB
JDBCHelper.java 8KB
MockData.java 7KB
Data2File.java 6KB
GroupConcatDistinctUDAF.java 6KB
StringUtils.java 6KB
DateUtils.java 5KB
ConfigurationManager.java 5KB
SparkUtils.java 5KB
MonitorAndCameraStateAccumulator.java 4KB
SelfDefineAccumulator.java 4KB
CarTrackDAOImpl.java 3KB
Constants.java 3KB
MonitorDAOImpl.java 3KB
MockRealTimeData.java 3KB
MonitorState.java 2KB
Task.java 2KB
Data2Hive.java 2KB
SpeedSortKey.java 2KB
TopNMonitorDetailInfo.java 2KB
TaskDAOImpl.java 2KB
RandomExtractMonitorDetail.java 2KB
ParamUtils.java 2KB
RandomExtractDAOImpl.java 2KB
MonitorAndCameraStateAccumulator2.java 951B
RandomExtractCar.java 908B
AreaDaoImpl.java 904B
CarInfoPer5M.java 889B
IMonitorDAO.java 858B
CarTrack.java 843B
TopNMonitor2CarCount.java 793B
WithTheCarDAOImpl.java 720B
DAOFactory.java 680B
Area.java 497B
ConcatStringStringUDF.java 487B
RandomPrefixUDF.java 457B
NumberUtils.java 449B
RemoveRandomPrefixUDF.java 437B
IRandomExtractDAO.java 426B
ITaskDAO.java 298B
ICarTrackDAO.java 255B
IAreaDao.java 154B
IWithTheCarDAO.java 104B
Top10SpeedPerMonitor.java 75B
卡扣监控.jpg 294KB
卡扣监控.jpg 234KB
抽取车辆.jpg 213KB
数据本地化级别调优.jpg 190KB
随机抽取车辆.jpg 187KB
采样倾斜key并分拆join操作.jpg 165KB
数据本地化级别.jpg 150KB
调节堆外内存.jpg 136KB
卡扣流量转换率.jpg 123KB
车辆碰撞.jpg 107KB
车辆高速通过的卡扣topn.jpg 107KB
数据处理.jpg 105KB
双重聚合.jpg 99KB
提高shuffle并行度.jpg 85KB
过程.jpg 83KB
任务提交.jpg 81KB
数据处理.jpg 77KB
README.md 12KB
Spark.mm 117KB
monitor_camera_info 675KB
monitor_flow_action 3.81MB
车流量监控项目v1.2.pdf 11.22MB
大数据综合业务平台.pdf 3.7MB
车流量监控项目.pdf 683KB
my.properties 518B
MonitorFlowAnalyzeScala.scala 18KB
AreaTop3RoadFlowAnalyzeScala1.scala 9KB
MockDataScala.scala 6KB
MonitorOneStepConvertRateAnalyzeScala.scala 6KB
RoadRealTimeAnalyzeScala2.scala 5KB
AreaTop3RoadFlowAnalyzeScala2.scala 4KB
GroupConcatDistinctUDAFScala.scala 4KB
RoadRealTimeAnalyzeScala1.scala 3KB
SelfDefineAccumulatorScala.scala 3KB
TestGroupByKey.scala 3KB
SelfDateCarInfosScala.scala 2KB
SelfDateCarCountScala.scala 2KB
MyMockRealTimeDataScala.scala 2KB
Test_DF_DS_RDD_Speed.scala 1KB
MockDataByMysql.scala 1KB
SparkUtilsScala.scala 935B
SpeedSortKeyScala.scala 670B
RedisClient.scala 329B
traffic.sql 7KB
createHiveTab.sql 661B
项目.txt 699B
提交hive运行的命令.txt 216B
pom.xml 5KB
hdfs-site.xml 3KB
共 105 条
- 1
- 2
资源评论
DdddJMs__135
- 粉丝: 1258
- 资源: 331
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 稽查监控平台标准化设计数据模型设计
- 一款极好用的 Office/WPS/Word/Excel/PPT/PDF工具箱软件 OfficeUtils 2.7
- 基于STM32的家庭环境参数检测系统设计
- 夺宝答题王答题小程序源码 开源可二开 Thinkphp内核
- Linux 系统下 Hadoop 安装配置教程.md
- 用于 CH32 MCU 的 CMake 实用程序(基于 STM32-CMake Proejct
- Linux 系统下 Hadoop 安装配置教程.md
- 基于ESO的 PMSM无传感器控制仿真-Matlab 2021b
- Python Programming - Hans-Petter Halvorsen
- Oracle 安装教程.md
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功