SuperAPI AI 工具集

streamling-sink-plugin

数据与分析

查看项目

更新于 10-16 05:49

技能介绍

用途:streamling SinkPlugin 是管道末端的消费插件(Agent Skill),负责接收上游 schema 的 RecordBatch 并写入外部系统(数据库、消息队列、对象存储、webhook),需在大量 I/O 下通过 checkpoint 协议保证精确一次(exactly-once)语义。前置条件为 streamling-plugin-basics(crate 搭建、注册、生命周期、错误处理)。

主要能力:实现 SinkPlugin trait(SupportsGracefulShutdown + Send + Sync),含 initialize、可选 labels、process_batch、process_checkpoint_marker、process_checkpoint_finalizer;构造函数由 register_plugin_sink! 调用,参数顺序为 schema 在前;sink 不实现 output_schema。

必要用法:在 initialize() 中用 OnceLock 惰性构建网络客户端,使初始化幂等;new() 只解析 options 并保存句柄。process_batch 先做空批次守卫(num_rows()==0 返回 Ok,不当作错误)并检查 running 状态。用 arrow_json::LineDelimitedWriter 将 RecordBatch 转为 NDJSON,注意 streamling.u256 扩展列(FixedSizeBinary(32))会输出十六进制,需预先转为十进制字符串的 Utf8。分批写入时按服务上限切块(如队列 API 每批 10 条),用稳定 id 映射失败条目,仅重试失败子集,指数退避上限 5 秒;sender fault 视为不可重试直接报错,无法映射失败 id 也按可能数据丢失报错。checkpoint 方面,process_checkpoint_marker 返回 Ok 表示确认,process_checkpoint_finalizer 在 epoch 持久提交后刷新缓冲,确保该 epoch 数据可经受崩溃。Upsert 型 sink 可读 primary_key 与 on_conflict,按 _gs_op 列区分插入/更新与删除;幂等 upsert sink 可整体重试,仅追加型需逐条跟踪。可用 labels 提供身份标识,并用 metrics_recorder 记录耗时。

适用场景:需要把流数据写入外部系统的 sink 开发。限制:官方文本未提供更多细节,价格、平台与效果信息暂未提供。