Singer 学习十一 配置以及状态管理
2024-08-27 20:46:37
配置和状态文件通过提供身份验证信息,开始时间和有关以前调用的信息,帮助为Taps和Targets提供上下文
配置文件
配置文件包含tap 运行需要的信息,通常包含API,以及数据源的凭据
- 特殊字段
start_data ,首次同步时候使用,指定数据同步的范围
user_agent 提供方便的问题解决,反馈的地址,一般可能是email 地址 - 格式
必须是json 格式文件,参考
{
"api_key" : "ABC123ASDF5432",
"start_date" : "2017-01-01T00:00:00Z",
"user_agent" : "Stitch (+support@stitchdata.com)"
}
状态文件
状态文件是一个json map 被用来存储调用tap 的信息,对于需要处理状态的stream 必须定期的进行状态数据
写入stdout,同时应该支持解析--state 配置参数
状态常用来记录最后一次调用中断的记录点,此时状态通常包含 last_updated_at
与源字段对应的时间戳,如果在
没有--state 参数,应该从头开始,或者某个适当的默认位置,如果包含了--state,就需要从状态记录文件开始
bookmark
用户记录当爱你tap 对于数据源处理的进度,如果tap 的stream 可以各自具有独立的状态,则Tap的状态输出
应符合以下格式:状态对象包含映射到对象的顶级属性“书签”。书签对象包含流标识符作为属性名称,
每个属性名称映射到描述相应流的状态的对象
参考:
{
"bookmarks": {
"orders": {
"last_record": "2017-07-07T10:20:00Z"
},
"customers": {
"last_record": 123
}
}
}
需要记住的事情
- 写入状态时,将不会同步该状态之前的数据,因此在所有可能的异常都将被抛出之前不要更新状态。
- 不支持按更新的时间戳过滤或包含更新的时间戳的端点不支持保存状态。
- 如果API支持按更新的时间戳进行过滤,请使用该过滤进行过滤。如果API不支持过滤但确实返回更新的数据时间戳,
请在流式传输数据之前按时间戳进行过滤。 - 当流入数据时,尽可能按升序流式传输数据。
- 工作可以在任何时候中断。保存的状态永远不应该是无效的。过早保存状态的中断作业将丢失数据。保存状态太晚的中
断作业将导致复制的重复行增加参考资料
https://github.com/singer-io/getting-started/blob/master/docs/CONFIG_AND_STATE.md
最新文章
- sdut 2498【aoe 网上的关键路径】
- 细聊分布式ID生成方法
- Android中的多线程
- .net 开发人员的瓶颈和职业发展
- 2、Python djang 框架下的word Excel TXT Image 等文件的下载
- Oracle EBS-SQL (PO-8):检查有供货比例无采购员.sql
- oracle误删的表恢复
- 解决 maven项目问题 An error occurred while filtering resources
- IOS开发-ObjC-NSString
- Python 多线程进程高级指南(二)
- 微信小程序学习笔记
- Axure 入门学习
- 快速熟悉Oracle索引
- iOS8之后搜索框的常规实例
- 基于TC做流量控制
- MVVM软件设计模式(转)
- python 判断两个列表中相同和不同的元素
- IIS 7上部署PHP【后续一】
- Visual Studio for Mac离线安装教程
- 日志记录的作用和方法 java
热门文章
- java关于集合的遍历与增强for循环(foreach)的使用
- dedecms中调用隐藏栏目的方法
- Java 安装后的检测是否安装成功
- UFT测试本地应用程序登陆小实例(描述性编程)
- AssetBundle自动标签、打包
- MySQL:常用的数据模型
- 解决 java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()L的问题
- $_SERVER['URI']
- Bug02_MyBatis_org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
- 2017中国大学生程序设计竞赛 - 网络选拔赛 HDU 6152 Friend-Graph(暴力搜索)