全部标签
#数据质量
14 篇 · 3 站
2026年8月Doris Stream Load 的假成功:label、三态判定与"先确认再破坏"一批脚本执行完毕、退出码全零,数据却一行都没进。原因全在装载语义里:label 幂等把重跑变成 SKIP、UNIQUE KEY 只覆盖本次出现的键、全量替换的顺序写反、staging 平铺目录跨日期污染。记录这四处以及我最后定下的装载规范。工程笔记2026年8月改一个键定义,为什么要重放全部历史商品身份 ID 是组键的确定性哈希,所以收紧对齐键会让所有 ID 换代:历史分区和新分区连不上,含 ID 的跨日特征必须全量重放。记录重放前的断点水位清理、字段宽度契约、旧分区 schema 冲突,以及"补完历史要再重载最新一天"这条铁律。工程笔记2026年7月口径只能有一个来源:spec_ontology、when 链和那条匹配空串的正则同一个"容量"在采集侧、计算侧、后台各解析一遍,迟早出问题。记录把单位折算、键别名、正则常量收进一个纯 Python 模块的过程,以及两条代价很高的教训:可选单位的正则把 TB 当 GB 落库,十几层 when 链让 executor 被 OOM 杀掉。工程笔记2026年7月跨源实体对齐:宁可少合并,不可假合并把两个站点的同一条商品认成一个,是所有跨源比价的前提。记录从标题归一化到分层确定性键的整段演进:规格键造出的假合并、concat_ws 对 null 跳段、字符多重集键,以及那条支配所有取舍的不对称原则。工程笔记2026年6月cron 不是你的登录 shell:PATH、中文路径和 set -u 的静默丢数手工跑一切正常、放进 crontab 就失败的三类原因:非登录 shell 的 PATH、POSIX locale 下 Java 解析不了非 ASCII 工作目录、以及只 set -u 不 set -e 带来的"报了成功但没入湖"。附我的验证方法:用 env -i 模拟 cron。工程笔记2026年4月采集量骤降的归因:先怀疑自己,再怀疑源站某天某类目的条数明显变少,第一反应通常是"被反爬了"。记录一套排除顺序:脚本改动、入湖丢数、分页截断、解析效率逐项排掉,最后用归档 HTML 重放证明是源站供给变化;以及一次把代码问题误判成风控的教训。工程笔记2026年4月两个源的脾气:编码、兜底页、分页回绕和 503 死循环ZOL 和 PConline 一个把规格写成营销长句、一个给结构化键值对;一个超页数返回 200 兜底页、一个直接回绕到首页推荐。记录终止判据、编码、选择器兼容和那次把整晚跑成空转的 503 退避死循环。工程笔记2026年3月爬虫也要有数据契约:price_status、schema_version 与原始页面留档采集层最划算的设计不是选择器写得多稳,而是把"这一行现在处于什么状态"显式写进字段里。记录 price_status / schema_version / parser_version / 行级页面级指纹的设计,以及为什么原始 HTML 必须留档。工程笔记