{"name":"数据处理","id":"数据技术-数据处理","content":"# 数据处理\n\n## 一、第一性原理：数据处理系统究竟在解决什么问题\n\n从抽象层面看，**所有数据处理系统都在回答同一个问题**：\n\n> 如何在可控成本下，把原始数据持续、可靠、可解释地转化为可消费的信息。\n\n拆解后，本质只有三类不可回避的矛盾：\n\n1. **时效性 vs 准确性**：结果要快，还是要准？\n2. **表达能力 vs 系统复杂度**：计算模型越强，系统越复杂\n3. **工程效率 vs 运维成本**：越“自动化”，越依赖底层系统能力\n\n后续所有计算引擎、架构范式、API 设计，本质都是在这三组张力之间取不同的平衡点。\n\n---\n\n## 二、计算引擎选型的三维空间（统一抽象）\n\n### 1. 响应速度：时间维度上的分层\n\n响应速度不是“快或慢”的问题，而是**数据是否有界**的问题：\n\n* **实时计算（毫秒级）**：无界数据 + 增量更新\n* **交互式分析（秒级）**：近实时 + 强索引\n* **批处理（分钟~小时）**：有界数据 + 全量或准全量计算\n\n> 本质区别：是否允许“等待完整数据集”。\n\n---\n\n### 2. 灵活性：计算模型的表达上限\n\n灵活性来自三个正交维度：\n\n* **计算范式**：SQL → 窗口 → 状态 → ML / 图\n* **数据模型**：结构化 → 半结构化 → 无结构\n* **扩展机制**：UDF / 插件 / API\n\n> 表达能力越强，对执行引擎的约束和状态管理要求越高。\n\n---\n\n### 3. 使用难度：系统复杂度的外溢程度\n\n使用难度不是“是否有 SQL”，而是复杂性是否被**系统内部吸收**：\n\n* 学习成本：是否符合用户心智模型\n* 开发效率：是否减少重复表达\n* 运维门槛：是否将失败、扩容、调优变成“默认能力”\n\n---\n\n## 三、数据处理的基本计算模型\n\n### 1. 批处理模型\n\n**定义**：\n\n* 输入数据有界、不可变\n* 计算过程无副作用\n* 结果可重放、可验证\n\nUNIX Pipeline、MapReduce 都属于这一范畴。\n\n#### MapReduce 的本质缺陷\n\n并非“慢”，而是：\n\n* 抽象层次过低（计算细节外泄）\n* shuffle 成本显性暴露\n* 异常处理与业务逻辑强耦合\n\n> 它暴露的是“分布式计算的真实复杂度”，而不是业务模型。\n\n---\n\n### 2. 流处理模型\n\n**核心假设改变**：\n\n* 数据无界\n* 结果只能通过增量逼近\n* 状态是第一等公民\n\n> 一旦承认数据无界，时间就成为必须显式建模的维度。\n\n---\n\n## 四、统一抽象：DAG 作为计算的通用表示\n\n无论批处理还是流处理，最终都会被编译为 **有向无环图（DAG）**：\n\n* 节点：计算算子\n* 边：数据依赖\n\n### DAG 的两种形态\n\n#### 1. 单任务 DAG\n\n* 内存中完成\n* shuffle 为阶段边界\n* Spark 的 Stage 模型\n\n#### 2. 管道 DAG\n\n* 以存储作为阶段隔离\n* 强一致性与数据复用\n* 典型于 ETL 工作流\n\n> DAG 的价值在于：**让系统有机会做全局优化**。\n\n---\n\n## 五、架构范式：如何组织批与流\n\n### 1. Lambda 架构\n\n**核心思想**：\n\n* 批处理保证最终正确性\n* 流处理保证时效性\n* 查询层做结果合并\n\n**致命问题**：\n\n* 两套计算逻辑\n* 两套状态语义\n* 一致性只能事后修复\n\n---\n\n### 2. Kappa 架构\n\n**关键前提**：\n\n* 一个可回放的日志系统\n* 所有计算都是流式\n\n**优势**：\n\n* 架构极简\n* 逻辑唯一\n\n**代价**：\n\n* 历史重算成本极高\n\n---\n\n### 3. 事件溯源\n\n**核心模型**：\n\n* 状态 = 事件序列的函数\n* 快照用于压缩历史\n\n**适用场景**：\n\n* 领域驱动设计\n* 强审计、强一致性需求\n\n---\n\n## 六、Spark：批处理时代的集大成者\n\n### 设计必然性\n\nSpark 的成功并非偶然，而是精准命中了三点：\n\n1. RDD 把容错内嵌进数据模型\n2. DAG Scheduler 吸收执行复杂度\n3. 内存优先，磁盘兜底\n\n### Spark SQL 的本质\n\nCatalyst = 关系代数 + 规则引擎 + 代价模型\n\n> SQL 不是接口，而是**可优化的中间表示**。\n\n### Structured Streaming\n\n* 不是“更快的 Spark Streaming”\n* 而是 **流处理的关系化表达**\n\n---\n\n## 七、Flink：以流为一等公民\n\nFlink 的核心取舍：\n\n* 状态显式建模\n* 事件时间优先\n* 精确一次语义\n\n> Flink 不是 Spark 的“流模式”，而是完全不同的计算哲学。\n\n---\n\n## 八、Beam：计算模型的抽象层\n\nBeam 的定位不是引擎，而是：\n\n> 对“分布式数据处理”进行形式化建模。\n\n* PCollection：统一表达有界 / 无界\n* Window / Watermark / Trigger：时间语义\n* Runner：把模型映射到具体引擎\n\n---\n\n## 九、Streaming SQL：表达力的终极形态\n\n当计算模型稳定后，**最终一定会走向声明式**：\n\n* 用户描述“要什么”\n* 系统决定“怎么做”\n\nStreaming SQL 是：\n\n* 关系模型\n* 状态机\n* 事件模式匹配\n\n的统一外壳。\n\n---\n\n## 总结\n\n1. **先选模型，再选引擎**\n2. **复杂性只能被转移，不能被消灭**\n3. **能被统一描述的，一定会被统一执行**\n4. **所有成功的系统，都在隐藏分布式本质**\n\n## 关联内容（自动生成）\n\n- [/数据技术/流处理.md](/数据技术/流处理.md) 流处理是数据处理的一种重要范式，与批处理共同构成现代数据处理的两大核心模式，两者在架构设计、计算模型和应用场景上各有侧重\n- [/数据技术/数据架构.md](/数据技术/数据架构.md) 数据架构为数据处理提供了整体框架和结构化载体，决定了数据流动方式和处理系统的可扩展性，是实现数据处理的技术基础\n- [/数据技术/大数据.md](/数据技术/大数据.md) 大数据技术栈是数据处理的重要技术基础，提供了大规模数据处理、存储和传输的能力，支撑企业级数据处理需求\n- [/数据技术/数据工程.md](/数据技术/数据工程.md) 数据工程实践需要基于规范的数据处理来组织数据生产流程，数据处理为数据工程提供标准化的数据转换和建模路径\n- [/数据技术/数据集成.md](/数据技术/数据集成.md) 数据处理是数据集成的核心环节之一，数据集成的转换与建模层涉及复杂的批处理、流处理和ELT操作，需要依赖各种数据处理引擎和框架\n- [/数据技术/数据治理.md](/数据技术/数据治理.md) 数据处理环节需遵循数据治理的质量规范，保证ETL过程中数据质量及降低运维成本，满足治理提出的规则要求\n- [/数据技术/数据仓库.md](/数据技术/数据仓库.md) 数据仓库建设涉及大量的数据处理工作，包括ETL流程设计、数据建模和数据分层处理\n- [/数据技术/任务调度系统.md](/数据技术/任务调度系统.md) 任务调度系统是数据处理的重要支撑，确保数据处理任务能够按时、准确执行\n- [/中间件/消息队列/Kafka/Kafka.md](/中间件/消息队列/Kafka/Kafka.md) Kafka作为流处理架构的核心组件，提供了实时数据流的传输和缓冲能力，是现代数据处理架构的重要基础设施\n- [/数据技术/机器学习.md](/数据技术/机器学习.md) 机器学习流程中的数据预处理是数据处理的重要应用领域，数据质量直接影响模型的学习效果和泛化能力\n\n","metadata":"tags: ['数据技术']","hasMoreCommit":true,"totalCommits":32,"commitList":[{"date":"2026-02-12T14:07:03+08:00","author":"MY","message":"doc: 整理标签","hash":"290b3e8ad18f48832ac282290238d020fc030a88"},{"date":"2026-02-04T11:16:33+08:00","author":"MY","message":"doc(数据处理): 重构文档","hash":"11cd957e605e39418122351f2fad0ecdc1dcb4f8"},{"date":"2025-11-05T14:49:13+08:00","author":"MY","message":"docs(数据处理): 完善数据处理文档内容","hash":"dda1b76f0b363436cc5e321f6acb2d6c69e3fe7c"},{"date":"2024-11-26T19:44:48+08:00","author":"MY","message":"📦数据处理","hash":"7866da93cdb2fb828132103cd4d0a2c257f3b59f"},{"date":"2024-11-25T15:59:06+08:00","author":"MY","message":"📦微服务","hash":"c8734b29d256e1b4841404e738ec87270d58d3f2"},{"date":"2024-06-24T20:03:06+08:00","author":"MY","message":"✏数据处理","hash":"17d9a9cfd5f093762857622df2cac4cfd26bebd7"},{"date":"2024-06-21T14:29:36+08:00","author":"MY","message":"✏数据处理","hash":"9005876db7ed5b95e243b1bb24d0243c9cde8427"},{"date":"2024-06-20T20:06:54+08:00","author":"MY","message":"✏数据处理","hash":"1748c3a4f9b0745fff0ccbf06c6b99f76a5c6b19"},{"date":"2024-06-19T19:38:53+08:00","author":"MY","message":"📦特征工程","hash":"04cdae4a71b3208a6b6add72773b0b7e54348f5d"},{"date":"2024-06-13T20:20:37+08:00","author":"MY","message":"➕流处理","hash":"786031c785bbd78729c2d621ad4b0182dc9f24b7"}],"createTime":"2022-12-14T15:38:14+08:00"}