
1) 【一句话结论】推荐系统数据流由**实时计算(处理实时用户行为,生成即时推荐)与离线计算(处理历史数据,训练模型、生成特征库,用于长期优化或冷启动)**共同构成,两者结合实现从数据采集到推荐结果的全流程。
2) 【原理/概念讲解】推荐系统的数据流核心是“实时+离线”双计算模式。
3) 【对比与适用场景】
| 对比维度 | 实时计算(流处理) | 离线计算(批处理) |
|---|---|---|
| 定义 | 处理实时数据流,低延迟响应 | 处理历史数据,高吞吐处理 |
| 特性 | 低延迟(秒级)、高实时性 | 高吞吐、高计算量、周期性执行 |
| 使用场景 | 实时推荐(用户点击后立即推荐)、冷启动用户(新用户无历史行为时,用离线模型生成初始推荐) | 历史数据特征工程、模型训练、推荐效果评估、长期优化 |
| 注意点 | 需要高并发处理能力,避免数据丢失 | 需要处理大规模数据,保证计算周期稳定 |
4) 【示例】
假设用户点击了视频ID为“video_001”,数据流处理如下:
伪代码(实时处理部分):
// Kafka消费点击事件
KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);
consumer.subscribe(Collections.singletonList("user_clicks"));
// Flink处理流
DataStream<ClickEvent> stream = env.addSource(consumer)
.map(record -> new ClickEvent(record.key(), record.value()));
// 更新用户画像
stream.keyBy(user -> user.getUserId())
.process(new UserInterestUpdater())
.process(new RealtimeRecommender())
.print();
5) 【面试口播版答案】
“推荐系统的数据流分为实时和离线两部分。用户行为数据(点击、点赞、评论)首先通过日志系统采集,实时计算负责处理实时行为,比如用户点击后立即更新用户兴趣模型,生成实时推荐;离线计算则处理历史数据,比如用历史行为训练推荐模型,生成离线特征库。两者结合,实时计算用于冷启动用户(比如新用户没有历史行为,用离线模型生成初始推荐),离线计算用于长期优化模型。比如用户点击视频后,实时流处理更新用户画像,推荐引擎根据实时兴趣推荐相似视频;同时,离线系统用历史数据训练协同过滤模型,更新推荐模型,提升推荐质量。”
6) 【追问清单】
7) 【常见坑/雷区】