数据收集和存储后,通常无法立即用于分析或应用。它需要进行处理。处理此问题最常见且成熟的方法之一是批处理。设想一下你的邮寄信件。它不会在一天中零散地送达。相反,邮递员会收集你路线上的所有邮件,然后一次性(通常每天一次)递送。数据工程中的批处理工作原理类似:数据在一段时间内收集,然后作为一个大组或“批次”一起处理。什么是批处理?批处理涉及执行处理长时间收集的大量数据的任务。这些任务通常在预定的时间间隔(如每晚或每周)运行,或者当累计数据达到特定大小时触发。批处理系统不会在每条数据到达时立即处理,而是等待并一次性处理大量数据块。设想一下公司如何生成客户账单。他们通常不会在服务使用后立即发送账单。相反,他们会收集一个月的用量数据,然后在月底运行一个批处理任务,处理所有客户的所有用量记录,计算应付款项,并生成发票。批处理如何运作典型流程如下所示:数据收集: 来自各种来源(如日志、用户活动、传感器读数)的数据随着时间在存储系统(如文件系统或数据库暂存区)中积累。任务调度: 处理任务被安排在特定时间(例如,每天凌晨2:00)运行,或者由某个事件触发(例如,当输入数据文件夹达到10 GB时)。处理: 批处理任务启动,读取整个累计数据块,执行所需的转换(如清洗、聚合、丰富),并计算结果。输出存储: 处理后的结果被写入目标系统,例如数据仓库、数据库或文件,以备报告或分析之用。此循环在每个处理间隔重复。digraph G { rankdir=LR; node [shape=box, style=filled, fillcolor="#a5d8ff", fontname="sans-serif"]; edge [fontname="sans-serif"]; subgraph cluster_sources { label = "数据来源"; bgcolor="#e9ecef"; src1 [label="日志"]; src2 [label="交易"]; src3 [label="用户活动"]; } subgraph cluster_storage { label = "积累"; bgcolor="#e9ecef"; storage [label="原始数据存储\n(文件, 暂存数据库)", shape=cylinder, fillcolor="#ffec99"]; } subgraph cluster_processing { label = "计划执行"; bgcolor="#e9ecef"; batch_job [label="批处理任务\n(例如,每日凌晨2点)", shape=cds, fillcolor="#b2f2bb"]; } subgraph cluster_output { label = "输出"; bgcolor="#e9ecef"; output [label="处理后的数据\n(数据仓库, 报告)", shape=cylinder, fillcolor="#ffc9c9"]; } src1 -> storage; src2 -> storage; src3 -> storage; storage -> batch_job [label=" 读取批次 "]; batch_job -> output [label=" 写入结果 "]; }数据从各种来源积累,由计划任务批量处理,结果存储以备后续使用。批处理的特点处理大量数据: 批处理擅长高效处理超大数据集。批量处理数据可以实现逐个处理单条记录时无法实现的优化。高延迟: 结果无法立即获得。从数据生成到处理结果就绪之间存在延迟(等待时间)。此延迟取决于批处理计划(例如,每日批处理意味着数据可能长达24小时未更新)。资源密集型(计划性): 批处理任务通常需要大量计算资源(CPU、内存、I/O),但这种使用集中在计划的处理时段内。这可以节约成本,因为资源不需要持续活跃。面向吞吐量: 主要目标是高吞吐量,意味着在给定时间内处理大量数据,而不是低延迟。常见应用场景批处理非常适合许多不严格要求实时结果的任务:数据仓库: 使用大量事务数据填充和更新数据仓库,用于商业智能和报告。这通常在夜间进行。计费系统: 根据累计的用量数据生成月度或定期发票。工资处理: 在一个工资周期结束时,计算所有员工的工资和扣款。大规模数据转换: 对大型数据集进行复杂的数据清洗、格式化和聚合任务。报告生成: 生成需要处理大量历史数据的复杂汇总报告。机器学习模型训练: 模型训练通常涉及处理大型静态数据集,这与批处理模型非常契合。优点与缺点优点:效率: 优化用于高效处理大量数据。简易性: 对于那些自然符合计划性、非实时模式的任务,实施和管理可以更简单。成本效益高: 资源可以在批处理任务运行期间临时配置,与常开系统相比,可能降低成本。缺点:延迟: 数据新鲜度受批处理间隔限制。不适用于需要即时信息或操作的场景。资源峰值: 在处理时段内可能需要大量的临时资源。批处理是数据工程中的一项基本技术,对于涉及大型数据集且不以即时结果为主要考量的任务,它尤为有效。它构成了许多传统数据仓库和报告系统的核心。理解批处理为我们后续学习其对应部分——流处理——打下良好基础。