数字孪生数据质量校验平台
业务与功能:本项目是电信运营商 IP 骨干网数字孪生工程的数据质量校验后端平台。各省网络采集数据(设备、链路、BGP/VPN/SRv6 路由、流量等 30 余类)以 Excel/CSV 按批次上报,平台负责解析入库、自动化质量校验、生成核查报告,并将问题回标到源 Excel 单元格,保障进入孪生库的数据准确、完整、一致。
背景与目标:数据质量决定孪生仿真精度,而人工核对数万行多表数据效率低、易遗漏,且问题难以精确定位。项目目标是实现“解析→校验→报告→标注→打包下载”全链路自动化,校验结果精确到单元格,规则可配置(100+ 复杂校验器),基于 Spark 支撑大数据量,并按省份、批次隔离管理。
核心模块:①文件解析模块(UnifiedFileParserController 统一编排,多引擎解析);②规则校验模块(数据库规则驱动 + 跨表关联、唯一性、格式等复杂校验器);③结果输出模块(Excel 回标、HTML 报告、数据分类统计与质量评分);④批次与文件管理模块(批次信息、ZIP 打包下载、按批次删除)。
业务流程:各省提交批次文件 → 解析入 Spark/MySQL → 执行规则校验并落库 validation_result(含行列定位)→ 统计评分并判定“通过/不通过” → 导出核查报告 → 在源 Excel 上标注问题 → 打包 ZIP 并回写下载路径 → 用户下载报告与标注文件,修复后重新上报。
整体架构与设计思路:系统采用 Spring Boot 分层架构(Controller → Service → Mapper → MySQL)。核心设计:①流程编排器——UnifiedFileParserController 统一串联“解析→入库→校验→统计→导出→标注→打包”全流程;②策略模式——EasyExcel/POI/CSV×Spark 五种解析引擎按文件类型切换;③双轨规则引擎——简单规则存数据库(rule_main/rule_sub)动态执行,复杂规则用 103 个校验器类处理跨表关联、唯一性等;④CompletableFuture 异步高容错,单文件失败不中断整批;⑤按“省份+批次”隔离数据与产物目录。
模块技术栈:Web 层 Spring Boot 2.2.5 + Swagger;解析层 EasyExcel/POI;大数据层 Spark 3.3 + Hadoop 3.3;持久层 MyBatis-Plus + MySQL 8 + HikariCP;输出层 java.util.zip 打包、Jackson 对接 Vue 前端。
难点与解决方案:
Excel 标注定位失败——表头字段名匹配受大小写/空格影响,改为记录行号+列索引直接定位单元格,并按 Error>Warning 优先级合并;
结果表能力不足——扩展 validation_result,新增列索引、错误类型、严重程度等字段;
ZIP 嵌套压缩——打包时过滤 .zip 文件避免套娃;
Spark 与 Spring 日志冲突——pom 中 exclusion 统一走 SLF4J;
Spark 资源泄漏——finally 中无条件清理 Session;
大文件 OOM——EasyExcel 流式读取 + Spark 临时表;
中文文件名乱码——UTF-8 编码 Content-Disposition;
统计查询慢——为 batch/table/status 建索引,规划预聚合表。