
1) 【一句话结论】
针对电商行业多源异构(订单、支付、物流等)与强时效性(如促销活动)的特点,需构建“实时+离线”双通道数据采集体系,通过标准化清洗(如去重、异常值过滤)与动态特征工程(如时序行为、用户画像),确保数据质量并满足大模型训练的时效与精度需求。
2) 【原理/概念讲解】
首先,多源异构:电商数据来自订单系统、支付平台、物流跟踪、用户行为日志等多个系统,数据格式(JSON、CSV、日志文本)、结构(结构化/半结构化/非结构化)差异大,类似“拼凑的拼图”,需统一处理。强时效性:促销活动(如618、双11)的流量、订单爆发,数据需实时响应,否则模型训练滞后。
数据采集:分为实时流采集(如Kafka消费订单、支付事件,低延迟秒级)和离线批量采集(如Spark/Hive每日/每小时汇总,高吞吐处理复杂计算),实时流保证时效,离线处理复杂特征。
数据清洗:解决数据质量问题,如缺失值(用户未填写地址)、异常值(订单金额负数)、重复数据(重复提交订单),确保数据可信。
特征工程:将原始数据转化为模型可用的特征,如统计特征(订单量均值)、时序特征(用户最近7天活跃度)、用户画像(消费等级、偏好标签),提升模型对用户行为的刻画能力。
3) 【对比与适用场景】
| 维度 | 实时采集 | 离线采集 |
|---|---|---|
| 定义 | 通过流处理(Flink、Kafka Streams)实时消费数据,低延迟(秒级) | 通过批处理(Spark、Hive)定期(小时/天)处理数据,高吞吐 |
| 特性 | 适用于强时效性场景(如实时推荐、促销活动响应) | 适用于复杂计算(如用户画像、长期趋势分析) |
| 使用场景 | 订单实时处理、支付状态更新、实时用户行为追踪 | 用户画像构建、历史订单分析、促销效果评估 |
| 注意点 | 需处理高并发、数据丢失风险 | 计算延迟,可能错过实时事件 |
数据清洗方法对比:
| 方法 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 去重 | 去除重复记录 | 简单高效 | 订单、用户行为日志 | 需定义唯一键(如订单ID+用户ID) |
| 缺失值处理 | 补充缺失值 | 避免数据缺失影响模型 | 用户地址、支付信息 | 选择策略(均值/中位数/众数/随机/删除) |
| 异常值检测 | 识别并处理异常值 | 保持数据分布 | 订单金额、物流时间 | 方法(3σ原则、IQR、聚类) |
| 数据标准化 | 统一数据格式 | 确保数据一致性 | 支付金额(元)、物流距离(公里) | 方法(Min-Max、Z-score) |
4) 【示例】
以订单数据清洗为例(伪代码):
# 1. 读取订单数据(JSON流)
orders = read_json_stream("kafka:orders_topic")
# 2. 去重:按订单ID+用户ID去重
unique_orders = orders.drop_duplicates(subset=["order_id", "user_id"])
# 3. 处理缺失值:填充用户地址为默认值
unique_orders = unique_orders.fillna({"address": "默认地址"})
# 4. 异常值检测:过滤金额负数或超过10000的订单
cleaned_orders = unique_orders[(unique_orders["amount"] > 0) & (unique_orders["amount"] < 10000)]
# 5. 输出清洗后数据到存储(如HDFS)
write_to_hdfs(cleaned_orders, "hdfs:/cleaned_orders")
特征工程示例(提取用户活跃度特征):
# 读取用户行为日志(按天聚合)
user_actions = read_csv("hdfs:/user_actions_daily")
# 计算用户最近7天订单量
user_actions["order_count_7d"] = user_actions.groupby("user_id")["order_id"].rolling(window=7).count().reset_index(level=0, drop=True)
# 计算用户最近7天支付金额均值
user_actions["avg_payment_7d"] = user_actions.groupby("user_id")["amount"].rolling(window=7).mean().reset_index(level=0, drop=True)
# 输出特征数据
write_to_hdfs(user_actions, "hdfs:/user_features")
5) 【面试口播版答案】
“面试官您好,针对电商多源异构和强时效性的特点,我设计的数据采集和预处理流程核心是构建‘实时+离线’双通道,并配合标准化清洗和动态特征工程。首先,数据采集方面,订单、支付等实时事件通过Kafka流处理实时消费,保证秒级响应;物流、用户行为等批量数据通过Spark批处理每日汇总。然后,数据清洗上,比如订单数据会先按订单ID+用户ID去重,处理缺失的地址信息(用默认值填充),再过滤金额异常值(如负数或超过1万),确保数据质量。特征工程方面,会提取用户最近7天的订单量、支付金额均值等时序特征,以及用户消费等级、偏好标签等画像特征,这些特征能更全面地刻画用户行为,提升模型效果。总结来说,通过分层采集和针对性处理,既满足强时效性需求,又保证数据质量,为后续大模型训练提供可靠输入。”
6) 【追问清单】
7) 【常见坑/雷区】