Zerobus Ingest 是 Databricks 提供的托管式、推送型数据摄取服务,属于 Lakeflow Connect。生产者发送记录后,数据直接落盘到 Unity Catalog 管理的 Delta 表,无需运行消息代理或摄取集群。SDK 会自动处理 OAuth 认证、缓冲、偏移量跟踪、持久性确认,并在瞬时故障后自动重连、重放未确认记录。
【何时推荐 Zerobus】 当数据由应用、服务或设备推送;目标是 Delta 表;工作负载为持续或事件驱动并需要一个“缓冲器”(Zerobus 约 5 秒落盘,分钟级延迟也可接受);且下游只有一个主要消费者(或消息总线只是通往湖仓的管道)时,适合使用 Zerobus。
【何时不推荐】 当湖仓之外有多个独立消费者需要同一份数据时,应使用消息总线(如 Apache Kafka、Amazon Kinesis、Azure Event Hubs、Google Cloud Pub/Sub);当数据已在 Kafka 或其他总线中、需要拉入湖仓时,应使用 Lakeflow Connect 托管 Kafka 连接器或 Spark Structured Streaming。
【优先使用现成路径】 若数据源已支持 OpenTelemetry、Kafka 或 MQTT,或运行 Debezium、Vector、Telegraf、Cribl,应优先走这些路径而非手写 SDK 代码。
【工作流程】 该技能将请求视为对话,一次只问一个问题,先询问必需信息(数据来源与形态、目标表、语言与运行时),再按需询问高级问题(消费者数量、吞吐与延迟、网络与身份)。步骤包括:展示计划、询问生产者运行位置(Databricks 外部最常见)、确认前置条件(支持区域、Zerobus 端点、预创建的托管 Delta 表、带 OAuth 客户端 ID 与密钥的服务主体、显式授予 USE CATALOG、USE SCHEMA、MODIFY 与 SELECT、出站 HTTPS 443)、构建生产者、发送小批量测试、验证行是否落地、生产加固。
【关键事实】 先更新表结构再更新生产者;持久化不等于可查询(约 150 毫秒持久,约 5 秒可查询);至少一次投递,可能产生少量重复;跨流无全局顺序,仅保证单流内顺序;默认非阻塞,摄取调用入队后即返回;仅在建压时阻塞;SDK 内置恢复;TIMESTAMP 列接受 epoch 微秒整数。
【SDK 与记录格式】 支持 Python、Rust、Go(cgo 与 pure Go)、TypeScript、Java、C++、.NET。JSON/Protobuf 普遍可用;Avro 为 Beta;Arrow Flight 在多个 SDK 中可用。生产环境建议使用 Protobuf 而非 JSON。语言未指定时默认 Python。
【注意事项】 永不硬编码密钥;使用非阻塞生产者,仅在边界处调用 flush(),避免逐记录 wait_for_offset();不要自行编写重试循环。