4. 数据采集与工程化接入

KLA检测机台(如Surfscan、SP系列、Puma、8系列等)产生的数据并非单一文件,而是由检测结果、缺陷清单、晶圆图、配方参数、机台状态日志等多类对象组成。要把这些数据稳定接入数据平台,核心不是“把文件拷过来”,而是建立一条可追溯、可重放、可校验的ETL链路:从机台侧的数据落盘位置出发,经过采集、解析、标准化、关联、入库,最终形成可供良率分析使用的结构化表。本节围绕这条链路,讲清采集方式、接口协议与工程化落地要点。

一、机台侧数据形态与采集边界

KLA机台通常以“批次/晶圆/检测任务”为组织单位输出数据。典型对象包括:缺陷明细文件(Defect List,含缺陷坐标X/Y、尺寸、类别、通道、灰度等字段)、晶圆图文件(Wafer Map,按Die或坐标网格记录Bin结果)、检测汇总报告(Summary,含缺陷总数、分类计数、扫描条件)、配方与机台参数(Recipe/Setup,含阈值、灵敏度、光源、像素尺寸)、以及机台运行日志(Log,含时间戳、状态、报警)。采集边界要明确:哪些目录是机台自动落盘的、哪些需要主动拉取、哪些只能通过机台软件导出。工程上建议先做一次“数据源盘点”,记录每类文件的路径模板、命名规则、生成频率和保留周期,避免后续解析规则频繁返工。

二、ETL流程:从落盘到可分析表

一条完整的ETL链路可拆为五段。第一段是发现与触发:通过文件监听(inotify/轮询)或机台消息通知,识别新批次数据到达。第二段是采集与暂存:将原始文件复制到暂存区(Staging),保留原始文件名与校验值(如MD5),确保可重放。第三段是解析与标准化:按文件类型解析为结构化记录,统一字段命名、单位、坐标系和时间格式。第四段是关联与补全:把缺陷明细与晶圆图、批次、产品、工序、机台配方关联,形成“缺陷—Die—批次—产品”的链路。第五段是入库与校验:写入数据平台(如Hive/ClickHouse/关系库),并执行行数、空值、坐标范围、重复率等质量校验。

KLA机台到数据平台的ETL链路与采集方式 KLA机台侧 缺陷明细 Defect List X/Y、尺寸、类别、通道 晶圆图 Wafer Map Die Bin、坐标网格 汇总报告 Summary 缺陷计数、扫描条件 配方/参数 Recipe 阈值、灵敏度、像素 机台日志 Log 时间戳、状态、报警 采集与暂存 实时采集 文件监听 / 消息通知 批量采集 定时拉取 / 目录扫描 暂存区 Staging 原始文件 + MD5校验 接口协议 SFTP / SMB / REST / MQ 解析与标准化 格式解析 KLARF / CSV / XML / JSON 字段标准化 命名/单位/坐标系统一 关联补全 缺陷—Die—批次—产品 质量校验 行数/空值/坐标范围 数据平台 明细层 ODS/DWD 缺陷明细、晶圆图 汇总层 DWS 批次/产品缺陷统计 良率关联表 缺陷—Bin—良率 分析服务 查询/看板/模型输入 实时采集用于在线监控与快速告警;批量采集用于历史批次补录与全量重算,两者共用同一套解析与校验规则

三、实时采集与批量采集的分工

实时采集与批量采集不是二选一,而是按数据用途分工。实时采集面向“在线监控、快速告警、当日良率趋势”,通常采用文件监听或消息队列,延迟目标在秒级到分钟级;批量采集面向“历史批次补录、全量重算、跨天汇总”,通常按小时或按天调度,允许更高延迟但要求更强的幂等与重跑能力。工程上建议:实时链路只做轻量解析和关键字段入库,重计算放到批量链路;两条链路共用同一份解析规则和校验规则,避免同一批数据出现两套口径。对于机台网络不稳定或文件生成有延迟的场景,实时链路要设置超时与补偿机制,例如超过阈值未收到文件则触发批量补拉。

四、常见接口与协议选择

KLA机台与数据平台之间的接口选择,取决于机台开放能力和现场网络条件。常见方式包括:SFTP/SCP,适合机台支持文件推送或平台主动拉取,稳定、易审计;SMB/CIFS,适合机台已挂载共享目录的场景,但要注意权限与并发读写;REST API,适合机台软件提供HTTP接口时,可获取结构化结果,但需处理分页、鉴权和限流;消息队列(Kafka/RabbitMQ),适合机台或中间件能发消息的场景,解耦好、吞吐高,但需要额外维护消息可靠性;数据库直连,仅在机台侧有中间库且允许只读账号时使用,需严格控制查询频率。实际项目中,常见组合是“SFTP拉取原始文件 + 消息通知触发解析”,兼顾稳定与实时性。

五、工程化落地要点与示例配置

要让ETL链路可运维,至少需要做到四点:一是幂等,同一批次重复采集不产生重复数据,通常用“批次号+文件MD5”做唯一键;二是可追溯,每条记录保留来源文件、采集时间、解析版本;三是可校验,入库前后对行数、缺陷总数、坐标范围做比对;四是可重跑,解析失败或规则升级后能按批次重放。下面给出一个批量采集的调度配置示例,用于说明关键参数如何设置。

# 示例:KLA批量采集任务配置(教学示例,非实测参数)
source:
  protocol: sftp
  host: 10.20.30.41
  remote_dir: /kla/export/{product}/{lot}
  file_pattern: "*.klarf,*.csv,*.xml"
  poll_interval: 300s          # 轮询间隔
  stable_time: 120s            # 文件大小稳定后才采集,避免半包
staging:
  local_dir: /data/staging/kla
  checksum: md5
parse:
  klarf_version: "1.8"
  coord_system: "die"          # 坐标系:die / wafer
  time_format: "yyyy-MM-dd HH:mm:ss"
load:
  target: dwd_kla_defect
  unique_key: [lot_id, wafer_id, file_md5]
  batch_size: 50000
quality:
  min_rows: 1
  max_null_ratio: 0.05
  coord_range: [0, 200]        # 示例坐标范围

配置中几个参数值得注意:stable_time用于避免采集到正在写入的半包文件;coord_system必须与后续良率关联的坐标系一致,否则缺陷与Die的对应会整体偏移;unique_key决定幂等边界,建议包含批次、晶圆和文件校验值;coord_range用于快速发现解析异常,例如坐标字段错位或单位错误。实际运行时,建议先在小批量批次上验证解析结果,再逐步扩大采集范围。

采集链路排障时,优先检查三处:文件是否完整落盘(大小是否稳定)、解析字段是否与机台版本匹配(KLARF版本差异常导致字段错位)、坐标系是否与良率分析口径一致。这三处能覆盖大部分“数据接入了但分析结果不对”的问题。

总体而言,从KLA机台到数据平台的接入,关键不在于单次拷贝成功,而在于把“发现—采集—解析—关联—校验—入库”做成一条可重复、可审计、可重跑的工程链路。实时与批量各司其职,接口协议按现场条件选择,解析与校验规则统一维护,才能为后续的良率关联分析提供稳定、可信的数据底座。