将博客搬至CSDN
Posted Maynor996
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将博客搬至CSDN相关的知识,希望对你有一定的参考价值。
将博客搬至CSDN
实时即未来,大数据项目车联网之项目基石与前瞻
车联网行业背景介绍
车联网技术
车联网的概念介绍
车联网( Internet of Vehicles )指按照一定的通信协议和数据交互标准,在“人-车-路-云“之间进行信息交换的网络。即首先实现汽车智能网联化,再利用各种传感技术,感知车辆状态信息,并借助无线通信网络与大数据分析技术实现交通的智能化管理。整体而言,车联网产业是汽车、电子、信息通信、道路交通运输等行业深度融合的新型产业形态。
车辆数据如何采集
车辆上有传感器捕获车辆的数据,CAN总线采集这些传感器数据,tbox 盒子将传感器数据封装成报文上报给云平台。
云(云平台、云中心、云计算)
云计算分为三层
IAAS层 基础设施层 , 案例 租借服务器
PAAS层 平台即服务层, 案例 阿里云,腾讯云,亚马逊云,平台
SAAS层 软件即服务, 案例 网站
汽车行业
车辆按功能分类
载客车
载货车
车辆按是否燃油驱动分类
燃油车 (808 部标)
非燃油车 (32960 国标)
车辆按大小来分
乘用车
商用车
汽车后服务市场
汽车金融
汽车租赁
二手车市场
汽车养护
新能源汽车
非燃料作为动力的汽车
分类
纯电动汽车、增程式电动汽车、混合动力汽车、燃料电池电动汽车、氢发动机汽车
车联网行业技术
车联网行业的技术特点
技术范围广
海量数据存储和海量计算 , 最低频次 1条/辆/5秒
软硬件结合
分布式、集群、高并发、容错
业务复杂 驾驶行程、电子栅栏、远程故障告警、远程控制、驾驶行程分析、疲劳驾驶、百公里油耗等。
研发成本大
安全性高,对用户隐私提供安全保障
车辆网行业产业链与国内知名企业
上游
中游
下游
车联网项目
车联网项目分析的目的
车联网数据分析车辆驾驶信息、车辆行驶信息、车辆车况信息、车辆故障信息、车辆报警信息等。
车联网项目分析的意义
对车企
车辆流程改进、车辆产品质量改进做决策
对车主
提供告警和报警信息,预防预测,防止出现危险、事故等
对监管部门
监管车辆的行驶轨迹、防止骗补,故障告警等
新能源充电桩企业
电量的电价,规划和放置充电桩位置
星途车联网项目
通过终端设备采集车辆上的CAN总线实时数据和企业静态hu离线数据,获取当前车辆的位置、行驶高程、车速、油压、电量、行驶里程、告警数据等数据,对其进行业务,车辆行程、故障告警、电子栅栏、百公里油耗、高温报警、低soc告警、疲劳驾驶告警等车联网分析,支撑汽车后服务市场、车企、政府监管部门、车主等服务。
海量存储
海量计算
数据量
原始数据 1kb/报文
5秒上报一条数据,12kb/1分钟 =》 720kb/h => 7200kb/day => 7200 0000kb/1w/day => 7200 0000 * 4/day => 7200 0000 * 4 * 3/day = 823GB/day 存储 / 0.7 * 90 = 103 TB/三个月
物理机 8T 128GB 5w*13=65w
云计算 阿里云
同等配置 5w/year
车联网技术架构和技术选型
车联网项目
-
image-20210919150240811 大数据相关组件
Flink 流处理
kafka 消息队列
HDFS 分布式存储系统
HBase 大表存储
Phoenix 基于SQL的查询
mysql/mongodb 存储结果数据
Zeppelin 前端SQL图表化
Dolphinscheduler 调度平台
任务调度方式
#!/bin/sh spark-submit --class com.dfssi.dataplatform.analysis.fuel.stats.ConditionFuelStatisticians --master yarn --deploy-mode client --num-executors 2 --driver-memory 1g --executor-memory 3g --executor-cores 2 --jars $(echo ../target/jars/*.jar | tr ' ' ',') ../target/DataMiningAnalysis-0.1-SNAPSHOT.jar
在调度平台中加载 shell 文件
车联网项目的架构搭建
车联网项目框架搭建
创建 CarNetworkingSystem 项目框架
导入依赖 jar 包的版本
导入配置文件 conf.properties logback.xml
创建各个模块
group artifact 模块 packaging 生成方式 cn.maynor CarNetworkingSystem 父工程 pom 创建 cn.maynor StreamingAnalysis 实时流式模块 jar 创建 cn.maynor OffLineBatchAnalysis 离线批处理模块 jar 创建 cn.maynor SourceDataProcess 数据生成模拟器模块 jar 创建 cn.maynor VehicleNetworkWeb Web可视化模块 war 导入
实时ETL处理,对 json字符串解析
json字符串
"\\"batteryAlarm\\": 0, \\"carMode\\": 1,\\"minVoltageBattery\\": 3.89, \\"chargeStatus\\": 1,\\"vin\\":\\"LS5A3CJC0JF890971\\""
复杂的 key/value 和 list集合的 json字符串解析示例
package cn.maynor.flink.source.test; import org.json.JSONArray; import org.json.JSONObject; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Set; /** * Author maynor * Date 2021/9/19 17:41 * 将json字符串转换成对象,将key-value转换成 HashMap * 对json字符串进行封装 * 开发步骤: * 1.定义 json 字符串 * 2.将JSONObject 字符串转换成 HashMap * 3.将JSONObject转换成 List<HashMap<String,Object>> * 4.解析 json 字符串 * 5.转换成对象 * 6.打印输出结果 */ public class JsonPlusParseOptimize public static void main(String[] args) //1.定义 json 字符串 String json = "\\"batteryAlarm\\": 0,\\"carMode\\": 1,\\"minVoltageBattery\\": 3.89,\\"chargeStatus\\": 1,\\"vin\\": \\"LS5A3CJC0JF890971\\",\\"nevChargeSystemTemperatureDtoList\\": [\\"probeTemperatures\\": [25, 23, 24, 21, 24, 21, 23, 21, 23, 21, 24, 21, 24, 21, 25, 21],\\"chargeTemperatureProbeNum\\": 16,\\"childSystemNum\\": 1]"; //2.将JSONObject 字符串转换成 HashMap JSONObject jsonObject = new JSONObject(json); HashMap<String,Object> vehicleHashMap = toHashMap(jsonObject); //3.将JSONObject转换成 List<HashMap<String,Object>> //读取key,将字符串传递进来 String nevChargeSystemTemperatureDtoStr = vehicleHashMap.get("nevChargeSystemTemperatureDtoList").toString(); List<HashMap<String,Object>> lists = toList(nevChargeSystemTemperatureDtoStr); //4.解析 json 字符串 //5.转换成对象 System.out.println(Integer.parseInt(vehicleHashMap.getOrDefault("batteryAlarm",-999999).toString())); //6.打印输出结果 for (HashMap<String, Object> list : lists) System.out.println(list.getOrDefault("chargeTemperatureProbeNum",-999999).toString()); /** * 将json数组字符串转换成List<HashMap> * @param value * @return */ private static List<HashMap<String, Object>> toList(String value) List<HashMap<String, Object>> lists = new ArrayList<>(); JSONArray objects = new JSONArray(value); //遍历数组,取出所有的对象并转换成 HashMap for (Object object : objects) String jsonStr = object.toString(); JSONObject jsonObject = new JSONObject(jsonStr); lists.add(toHashMap(jsonObject)); return lists; /** * 将 JSONObject 转换成 HashMap 对象 * @param jsonObject * @return */ private static HashMap<String, Object> toHashMap(JSONObject jsonObject) HashMap<String, Object> kv = new HashMap<String,Object>(); //读取 jsonObject 所有 keys Set<String> keys = jsonObject.keySet(); for (String key : keys) //遍历所有key,得到所有值 kv.put(key,jsonObject.get(key)); //将其保存到 kv return kv;
具体数据业务分析,流程如下图所示
image-20210919144822350
以上是关于将博客搬至CSDN的主要内容,如果未能解决你的问题,请参考以下文章