SuperAPI AI 工具集

rerun-chunk-processing

数据与分析

查看项目

更新于 10-16 01:06

技能介绍

Rerun 分块处理位于原始数据与 RRD 之间:读取器产出 Chunk,流负责变换,终结调用触发执行。本技能只讲通用机制。

决策顺序:先确定数据模型,再按来源选导入技能。来源与读取器对应关系:MCAP(ROS2、protobuf、Foxglove)用 McapReader(path).stream();URDF 机器人模型用 UrdfTree.from_file_path(...).stream();Parquet 表用 ParquetReader(path).stream();mp4 视频用 Mp4Reader(path).stream();HDF5 用 Hdf5Reader(path).stream();LeRobot 数据集目录用内置导入器加 RrdReader;已有 RRD 用 RrdReader(path);JSON 标定等侧车文件用 Chunk.from_columns 加 from_iter。API 属于 rerun.experimental,行为关键时可查安装面:python -c "from rerun.chunk import LazyChunkStream; help(LazyChunkStream)"。

核心模型:LazyChunkStream 是惰性管线 DAG,构建过滤器、lens、map、split、merge 时不读取源数据;执行由 write_rrd、collect、to_chunks 或迭代触发,流式、多线程。构建器调用有移动语义,会消费输入流,消费后复用会报错,每步需重新赋值;终结调用会重新执行整个管线。

流组合:filter/drop 支持 content、has_timeline、is_static、components 过滤;map 与 flat_map 做 Chunk 级 Python 逻辑;split 返回匹配与非匹配两支;LazyChunkStream.merge 多源汇合;from_iter 包装手建 chunk。

Lens:用 stream.lenses(lenses, output_mode=..., content=...) 应用。MutateLens 原地修改已有组件;DeriveLens 新建列或实体,支持 to_component、to_timeline,scatter=True 可将一行展开为多行。输出模式默认 drop_unmatched,仅保留 lens 输出;forward_unmatched 保留未消费的原始组件,适用于定点修复;forward_all 保留全部原始组件。Selector 采用 jq 风格语法(.、.field、[]、[N]、?、!、|)并可 .pipe 链式转换。

手建 Chunk 仅限无读取器或 lens 能产出的侧车数据,用 Chunk.from_columns;录制属性用 Chunk.from_property。

写入:stream.write_rrd(path, application_id=..., recording_id=...) 一次流式写出;也可 collect(optimize=OptimizationProfile.OBJECT_STORE) 后再写。面向 Rerun 目录或 Hub 时用 OBJECT_STORE;LIVE 用于低延迟查看。

与日志 API 的区别:rr.log 等用于实时日志;分块处理用于摄取、转换与后处理。日志转 chunk 可先写 RRD 再用 RrdReader 读回;chunk 转日志用 rerun.send_chunks。

注意:默认 drop_unmatched 易静默丢弃其余流;勿复用已消费流;lens 需用 content= 限定作用域;MutateLens 要保持 Arrow 类型与长度。本 API 为实验性,升级时需核对签名。