CH 16 / SOURCE EXAMPLE
sample_join.sql
ch16 推荐系统离线服务/code/ch01_sample_flow/sample_join.sql
这个示例讲什么
│ ├── sample_join.sql # Hive SQL 非实时样本拼接示例
上面来自章节 README 或源码自身的说明,不是自动验证的运行结果,也不能代替 PDF 的书中论断。讲解时请结合实际代码、输入输出与原书页码。
源码结构与阅读入口
此文件没有可提取的 Python 顶层类/函数目录;可直接按行阅读完整源码。
1-- sample_join.sql2-- 基于 Hive SQL 的非实时样本拼接3-- 对应书中 code_hive_sample_join4--5-- [MOCK] 以下 SQL 在 Hive/Spark SQL 环境下可运行。6-- 实际任务还需明确日期分区、Label 去重规则,7-- 以及同一 Request ID 出现多个特征版本时的选版策略。89WITH latest_label AS (10 SELECT request_id, item_id, click, watch_time_ms, event_time_ms11 FROM (12 SELECT request_id, item_id, click, watch_time_ms, event_time_ms,13 ROW_NUMBER() OVER (14 PARTITION BY request_id, item_id15 ORDER BY event_time_ms DESC) AS rn16 FROM dwd_item_feedback17 WHERE dt BETWEEN '${start_dt}' AND '${end_dt}'18 ) t19 WHERE rn = 120)21INSERT OVERWRITE TABLE dws_training_sample PARTITION (dt='${biz_dt}')22SELECT f.request_id, f.item_id, f.user_features, f.context_features,23 f.item_features, f.request_time_ms,24 l.click, l.watch_time_ms, l.event_time_ms AS label_time_ms25FROM dwd_request_features f26JOIN latest_label l27 ON f.request_id = l.request_id AND f.item_id = l.item_id28WHERE f.dt = '${biz_dt}';如何用于学习或编写新代码
- 先看章节 README 的依赖和运行成本,定位这个例子的输入、输出及关键函数。
- 在原书 PDF 中找到对应概念的具体页;代码演示与书中论断分开标注。
- 只在依赖和耗时可控时运行单个示例,修改一个参数并记录真实输出与失败情形。
- 参考实现新代码时说明复用、改动、测试与尚未完成的生产依赖;教学示例并非生产系统。