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 在 #数据工程 中
87 每月下载量
在 6 个 软件包中使用 (直接使用 2 个)
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 |
上游管道名称列表 | 如果 ty 是 Poller 或 Listener 则为 false |
output |
输出 数据 类型 |
如果 pipe type 是 Exporter |
注意
- 管道作为带有上游的 有向无环图 连接
- 管道的上游应该有 相同 的输出类型,即管道的输入类型在运行时确定
- 管道为输入定义了特例约束,上游的输出应该满足此约束
管道类型
类型 | 描述 | #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 field 的 meta 列表 |
true |
元数据
元数据定义了对象的额外属性,以便满足管道输入的特例约束。请参见示例 fix_left_right
、fix_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