项目基石与前瞻
车联网行业背景介绍
车联网技术
- 车联网的概念介绍车联网( Internet of Vehicles )指按照一定的通信协议和数据交互标准,在“人-车-路-云“之间进行信息交换的网络。即首先实现汽车智能网联化,再利用各种传感技术,感知车辆状态信息,并借助无线通信网络与大数据分析技术实现交通的智能化管理。整体而言,车联网产业是汽车、电子、信息通信、道路交通运输等行业深度融合的新型产业形态。
- 车辆数据如何采集车辆上有传感器捕获车辆的数据,CAN总线采集这些传感器数据,tbox 盒子将传感器数据封装成报文上报给云平台。
- 云(云平台、云中心、云计算)- 云计算分为三层 1. IAAS层 基础设施层 , 案例 租借服务器2. PAAS层 平台即服务层, 案例 阿里云,腾讯云,亚马逊云,平台3. SAAS层 软件即服务, 案例 网站
汽车行业
- 车辆按功能分类1. 载客车2. 载货车
- 车辆按是否燃油驱动分类1. 燃油车 (808 部标)2. 非燃油车 (32960 国标)
- 车辆按大小来分1. 乘用车2. 商用车
- 汽车后服务市场1. 汽车金融2. 汽车租赁3. 二手车市场4. 汽车养护
新能源汽车
- 非燃料作为动力的汽车
- 分类纯电动汽车、增程式电动汽车、混合动力汽车、燃料电池电动汽车、氢发动机汽车
车联网行业技术
- 车联网行业的技术特点1. 技术范围广2. 海量数据存储和海量计算 , 最低频次 1条/辆/5秒3. 软硬件结合4. 分布式、集群、高并发、容错5. 业务复杂 驾驶行程、电子栅栏、远程故障告警、远程控制、驾驶行程分析、疲劳驾驶、百公里油耗等。6. 研发成本大7. 安全性高,对用户隐私提供安全保障
车辆网行业产业链与国内知名企业
- 上游
- 中游
- 下游
车联网项目
- 车联网项目分析的目的车联网数据分析车辆驾驶信息、车辆行驶信息、车辆车况信息、车辆故障信息、车辆报警信息等。
- 车联网项目分析的意义1. 对车企车辆流程改进、车辆产品质量改进做决策2. 对车主提供告警和报警信息,预防预测,防止出现危险、事故等3. 对监管部门监管车辆的行驶轨迹、防止骗补,故障告警等4. 新能源充电桩企业电量的电价,规划和放置充电桩位置
- 星途车联网项目通过终端设备采集车辆上的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
车联网技术架构和技术选型
- 车联网项目
- 大数据相关组件Flink 流处理kafka 消息队列HDFS 分布式存储系统HBase 大表存储Phoenix 基于SQL的查询MySQL/mongodb 存储结果数据Zeppelin 前端SQL图表化Dolphinscheduler 调度平台
- 任务调度方式
#!/bin/shspark-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- 创建各个模块groupartifact模块packaging生成方式cn.itcastCarNetworkingSystem父工程pom创建cn.itcastStreamingAnalysis实时流式模块jar创建cn.itcastOffLineBatchAnalysis离线批处理模块jar创建cn.itcastSourceDataProcess数据生成模拟器模块jar创建cn.itcastVehicleNetworkWebWeb可视化模块war导入
- 实时ETL处理,对 json字符串解析- json字符串
"{\"batteryAlarm\": 0, \"carMode\": 1,\"minVoltageBattery\": 3.89, \"chargeStatus\": 1,\"vin\":\"LS5A3CJC0JF890971\"}"
- 复杂的 key/value 和 list集合的 json字符串解析示例package cn.itcast.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 itcast * 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.打印输出结果 */publicclassJsonPlusParseOptimize{publicstaticvoidmain(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 =newJSONObject(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 */privatestatic List<HashMap<String, Object>>toList(String value){ List<HashMap<String, Object>> lists =newArrayList<>(); JSONArray objects =newJSONArray(value);//遍历数组,取出所有的对象并转换成 HashMapfor(Object object : objects){ String jsonStr = object.toString(); JSONObject jsonObject =newJSONObject(jsonStr); lists.add(toHashMap(jsonObject));}return lists;}/** * 将 JSONObject 转换成 HashMap 对象 * @param jsonObject * @return */privatestatic HashMap<String, Object>toHashMap(JSONObject jsonObject){ HashMap<String, Object> kv =newHashMap<String,Object>();//读取 jsonObject 所有 keys Set<String> keys = jsonObject.keySet();for(String key : keys){//遍历所有key,得到所有值 kv.put(key,jsonObject.get(key));}//将其保存到 kvreturn kv;}}
- 具体数据业务分析,流程如下图所示
本文转载自: https://blog.csdn.net/xianyu120/article/details/126427883
版权归原作者 码农Maynor 所有, 如有侵权,请联系我们删除。
版权归原作者 码农Maynor 所有, 如有侵权,请联系我们删除。