#声明式管道 #数据工程 #API 集成 #YAML 解析器

pipegen

使用 pipebase 框架的数据集成应用生成器

21 个版本

0.2.2 2022年2月26日
0.2.1 2022年1月9日
0.2.0 2021年12月26日
0.1.17 2021年12月3日
0.1.10 2021年8月31日

#7#数据工程

Download history 33/week @ 2024-03-31 3/week @ 2024-04-07 1/week @ 2024-05-12 6/week @ 2024-05-19 2/week @ 2024-06-02 4/week @ 2024-06-09 1/week @ 2024-06-16 1/week @ 2024-06-23 85/week @ 2024-07-07

87 每月下载量
6 软件包中使用 (直接使用 2 个)

Apache-2.0 协议

135KB
3.5K SLoC

pipegen 解析 manifest,包含管道/自定义数据对象规范,并为数据集成应用生成代码

Manifest 布局

一个 manifest 由以下组成

字段 描述 必需
name 应用程序名称 true
dependencies 应用程序依赖的软件包列表 false
pipes 管道定义列表 true
objects 自定义数据对象定义列表 false
cstores 管道运行时上下文存储定义列表 false
error 管道错误处理器定义 false

提示:使用 支持 YAML 语言schema 设置来组合 manifest

依赖项

应用程序依赖项,类似于 cargo dependencies 示例

dependencies:
  - name: pipebase
    version: 0.1.0
    modules: ["pipebase::prelude::*"]

规范

字段 描述 必需
name 软件包名称 true
版本 软件包版本 false
路径 本地软件包路径 false
git Git 仓库 URL false
分支 Git 仓库分支 false
tag Git 仓库标签 false
features cargofeatures false
cargo 工作区 中的包 false
模块 使用的模块列表 true

管道

管道是创建的最小运行单元,例如

name: timer1
ty: Poller
config:
  ty: TimerConfig
  path: catalogs/timer.yml
output:
  ty: UnsignedLongLong

规范

字段 描述 必需
name 蛇形命名法的管道名称 true
ty 管道类型 如果 config.ty 已注册则为 false
config.ty 管道配置类型 true
config.路径 管道配置文件路径 false
upstreams 上游管道名称列表 如果 tyPollerListener 则为 false
output 输出 数据 类型 如果 pipe typeExporter

注意

  • 管道作为带有上游的 有向无环图 连接
  • 管道的上游应该有 相同 的输出类型,即管道的输入类型在运行时确定
  • 管道为输入定义了特例约束,上游的输出应该满足此约束

管道类型

类型 描述 #upstreams #downstreams
Listener 在本地监听数据 0 1+
Poller 在远程轮询数据 0 1+
Mapper 转换输入 1+ 1+
Collector 批量输入 1+ 1+
Streamer 流式批量输入 1+ 1+
Selector 将输入发送到下游的子集 1+ 1+
Exporter 将输入导出到远程 1+ 0

Object

管道中传输的自定义数据对象,例如

ty: Record
metas:
  - derives: [Clone, Debug, Deserialize]
fields:
  - name: key
    ty: String
  - name: value
    ty: UnsignedInteger

规范

字段 描述 必需
ty 驼峰式对象类型 true
元数据 每个对象的 meta 列表 false
字段 每个 data fieldmeta 列表 true

元数据

元数据定义了对象的额外属性,以便满足管道输入的特例约束。请参见示例 fix_left_rightfix_convert 了解何时以及如何使用元数据

数据字段

字段 描述 必需
name 字段名称 false
ty 数据类型 true
元数据 每个字段的 meta 列表 false
is_public 字段是否为公共字段 false

数据类型

类型 Rust 中
布尔值 bool
字符 char
字符串 字符串
字节 i8
无符号字节 u8
短整型 i16
无符号短整型 u16
整型 i32
无符号整型 u32
大小 size
无符号大小 usize
长整型 i64
无符号长整型 u64
长长整型 i128
无符号长长整型 u128
浮点数 f32
双精度浮点数 f64
PathBuf std::路径::PathBuf
Count32 pipebase::common::Count32
Averagef32 pipebase::common::Averagef32
Date chrono::NaiveDate
DateTime chrono::NaiveDateTime
Duration chrono::Duration
LocalTime chrono::DateTime<chrono::Local>
UtcTime chrono::DateTime<chrono::Utc>
Period pipebase::common::Period
Timestamp pipebase::common::Timestamp
Box Box<T>
Option Option<T>
Vec Vec<T>
Array [T;N]
Tuple (T,)
HashMap HashMap<K, V>
HashSet HashSet<T>
Pair pipebase::common::Pair<L, R>

上下文存储

存储管道的运行时上下文,包括:pipe 名称pipe 状态总运行时间失败运行时间

管道状态

状态 管道类型
Init 所有
Receive 除了 Poller
Poll Poller
Map Mapper
Send 除了 Exporter
Export Exporter
Done 所有

错误处理器

从管道监听错误,例如 error_printer

依赖关系

~4MB
~80K SLoC