You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Databricks Bronze层_RAW与_APPEND_RAW表的差异及必要性咨询

Bronze层_RAW与_APPEND_RAW流表的差异及存在意义

核心差异

  • 写入逻辑与数据状态:

    • _RAW表:是原始数据的“快照容器”,直接从数据源(如Kafka、云存储)摄取全量原始记录,严格保证Exactly-Once语义,数据写入后不会被修改,完全保留原始格式(包括冗余的元数据、未解析的嵌套结构甚至无效消息),相当于数据的“终极备份”。
    • _APPEND_RAW表:是增量加工的过渡表,数据源通常是_RAW表,会做轻量清洗(比如过滤格式无效的记录、解析基础字段),然后以追加模式持续写入新的增量数据,数据是经过初步标准化的“可用原始数据”。
  • 定位与用途:

    • _RAW表的核心作用是留存原始事实,不管后续加工逻辑怎么变,这里永远是最原始的数据源,用于回溯、故障恢复或重新加工。
    • _APPEND_RAW表是下游加工的“前置跳板”,它提前处理了原始数据的脏数据、格式问题,让Silver层的处理更高效,无需再处理原始数据的冗余信息。

为何要拆分两个独立表?

  • 风险隔离:如果直接在原始表上做加工,一旦逻辑出错(比如误删数据、错误过滤),会直接污染原始数据源,导致无法恢复。拆分后,_RAW表不受加工逻辑影响,永远是干净的备份。
  • 性能优化:原始数据往往包含大量无关元数据(如Kafka的topic、offset信息)或嵌套结构,直接给下游处理会增加计算负担。_APPEND_RAW提前做轻量处理,减少下游的解析成本。
  • 适配流处理场景:_RAW表是一次性捕获全量原始数据,适合需要回溯历史的离线场景;_APPEND_RAW是增量追加模式,完美适配实时流处理,下游可以直接订阅它的增量数据,无需每次扫描全量原始数据。
  • 符合Medallion架构分层原则:Bronze层的职责就是“原始捕获+初步清洗”,拆分两个表刚好对应这两个阶段,让数据流向更清晰,维护成本更低——比如修改清洗逻辑只需调整_APPEND_RAW的定义,不会影响原始数据的留存。

举个实际场景:

从Kafka摄取用户行为数据时,_RAW表会保存Kafka的完整原始消息(包括分区、偏移量、未解析的JSON字符串),一条都不丢。_APPEND_RAW表则从_RAW读取数据,过滤掉格式错误的JSON,解析出用户ID、行为类型、发生时间等基础字段后追加写入。下游Silver层直接从_APPEND_RAW读取,处理用户行为的聚合分析,不用再处理Kafka的原始元数据和无效消息。

内容的提问来源于stack exchange,提问作者Sql Dev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 07:42:35