XTU数据处理与存储方案。简言之,数据分离线与实时两部分。离线数据经处理后,存储在hive里,用于构建机器学习训练样本。实时数据经处理后,存在redis里,用于机器学习实时推理。数据来源是消息队列,处理手段主要是基于spark的数据清洗和时序特征提取。
实时计算路线:
离线计算路线:
┌───────────────────────────────┐
│ XTU 原始上报数据 │
└────────────┬──────────────────┘
│
**数据接入 Kafka**
│
┌────────────────────────┴─────────────────────────┐
│ │
**实时计算路线** **离线计算路线**
│ │
1. Spark Streaming 消费 Kafka数据 1. Spark Streaming 消费 Kafka数据
│ │
2. 计算时序特征(如5分钟均值、标准差) 2. 数据清洗 & 特征提取
│ │
3. 特征数据存入 Redis 3. 特征数据存入 Hive
│ │
4. 实时模型推理 4. 离线训练机器学习模型
│ │
5. 推理结果存入数据库或告警系统 5. 模型更新推送到推理系统
不同类型的数据划分到不同的 Topic 中,便于实时和离线消费。
示例:
Topic: xtu_realtime_data (实时数据,三遥数据、设备数据)
Topic: xtu_waveform_data (录波数据)
Spark Streaming 消费 Kafka 数据:
xtu_realtime_data
Topic。计算时序特征:
按时间窗口(如 1 分钟、5 分钟)对数据进行分组,计算时序特征:
示例特征输出:
{
"device_id": "device_001",
"timestamp": 1677763200,
"voltage_mean": 220.5,
"voltage_std_dev": 0.8,
"current_mean": 30.2,
"current_std_dev": 1.2
}
特征数据存入 Redis:
xtu:device_id:timestamp
。模型实时推理:
xtu_alerts
Topic)。告警和后续处理:
Spark Streaming 消费 Kafka 数据:
xtu_realtime_data
Topic。提取时序特征:
特征数据存储到 Hive:
将清洗和特征提取后的数据存入 Hive 表,供后续模型训练使用。
示例 Hive 表结构:
CREATE TABLE xtu_features (
device_id STRING,
timestamp BIGINT,
voltage_mean DOUBLE,
voltage_std_dev DOUBLE,
current_mean DOUBLE,
current_std_dev DOUBLE,
...
)
PARTITIONED BY (date STRING);
数据按日期分区存储,便于高效查询和管理。
模型训练:
模型更新:
实时推理:
xtu_alerts
Topic。告警机制:
通过这种设计,实时和离线计算都基于 Spark Streaming 和 Kafka,架构简化且高度统一,同时满足实时性和离线分析需求。