如何没有找到适合的tap,那么我们可以自己开发一个

hello world

tap 仅仅是一个程序,我们可以使用任何语言进行编写,根据singer 指南,输出数据到stdout 即可,实际上一个简单的
demo,可以直接使用命令行工具,不需要编写任何代码
内容

 
printf '{"type":"SCHEMA", "stream":"hello","key_properties":[],"schema":{"type":"object", "properties":{"value":{"type":"string"}}}}\n{"type":"RECORD","stream":"hello","schema":"hello","record":{"value":"world"}}\n'
 

说明:
上边的编写了数据{"value":"world"} 到一个hello 的stream,同时指定了value 的数据类型为string,数据可以pipe 到
任何的target

python tap demo

singer 提供了python 的工具包,我们可以方便的开发tap
(1). 安装singer-python
推荐的做法,是使用指定的版本

pip install singer-python
 

(2). 简单demo
tap_ip.py

 
import singer
import urllib.request
from datetime import datetime, timezone
now = datetime.now(timezone.utc).isoformat()
schema = {
    'properties': {
        'ip': {'type': 'string'},
        'timestamp': {'type': 'string', 'format': 'date-time'},
    },
}
with urllib.request.urlopen('http://icanhazip.com') as response:
    ip = response.read().decode('utf-8').strip()
    singer.write_schema('my_ip', schema, 'timestamp')
    singer.write_records('my_ip', [{'timestamp': now, 'ip': ip}])
 
 

说明:
singer.write_schema 编写了一个 my_ip stream 同时定义了 primary key
singer.write_records 写record 数据到stream
(3). 运行
下边的demo 是将数据pipe 到google sheet 的target

python tap_ip.py | target-gsheet -c config.json

说明

官方同时提供了一个tap 的脚手架模版singer-tap-template

参考资料

https://github.com/singer-io/getting-started/blob/master/docs/RUNNING_AND_DEVELOPING.md

Singer 学习八 运行&&开发taps、targets (三 开发tap)的更多相关文章

  1. Singer 学习七 运行&&开发taps、targets (二 targets 运行说明)

    接上文: Singer 学习六 运行&&开发taps.targets (一 taps 运行说明) 说明target 需要tap 进行配合运行,所以需要了解tap 的使用 运行targe ...

  2. Singer 学习六 运行&&开发taps、targets (一 taps 运行说明)

    文章内容来来自官方github 说明: singer大部分的taps && targets 是用python编写的,所以内容里面的代码也是使用python 编写 使用python运行s ...

  3. Singer 学习九 运行&&开发taps、targets (四 开发target)

    singer 的target 需要从stdin 的行数据,同时处理schema.record.state 消息 指南 schema 需要进行关联stream records 数据的校验 一旦Targe ...

  4. VSTO学习笔记(三) 开发Office 2010 64位COM加载项

    原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(A ...

  5. WCF开发实战系列三:自运行WCF服务

    WCF开发实战系列三:自运行WCF服务 (原创:灰灰虫的家 http://hi.baidu.com/grayworm)上一篇文章中我们建立了一个WCF服务站点,为WCF服务库运行提供WEB支持,我们把 ...

  6. iOS 11开发教程(三)运行第一个iOS 11程序

    iOS 11开发教程(三)运行第一个iOS 11程序 运行iOS11程序 创建好项目之后,就可以运行这个项目中的程序了.单击运行按钮,如果程序没有任何问题的话,会看到如图1.6和1.7的运行效果. 图 ...

  7. 《ORACLE数据库管理与开发》第三章学习之常用函数记录

    <ORACLE数据库管理与开发>第三章学习之常用函数记录 注:文章中的*代表所要操作的列名 1.lower(*)/upper(*),将此列下的值转为小写/大写 2.initcap(*):把 ...

  8. iOS学习——iOS项目Project 和 Targets配置详解

    最近开始学习完整iOS项目的开发流程和思路,在实际的项目开发过程中,我们通常需要对项目代码和资料进行版本控制和管理,一般比较常用的SVN或者Github进行代码版本控制和项目管理.我们iOS项目的开发 ...

  9. 《MFC游戏开发》笔记三 游戏贴图与透明特效的实现

    本系列文章由七十一雾央编写,转载请注明出处. 313239 作者:七十一雾央 新浪微博:http://weibo.com/1689160943/profile?rightmod=1&wvr=5 ...

随机推荐

  1. S2 深入.NET和C#编程 笔试测试错题积累

    ---恢复内容开始--- <深入.NET平台和C#编程>内部测试题-笔试试卷错题积累 1: 1) 以下关于序列化和反序列化的描述错误的是( C). a) 序列化是将对象的状态存储到特定存储 ...

  2. bootstrap动态生成层级ul-li 新闻预览 常用方法

    <div class="row" id="add-withinfosortId-row" style="display: none"& ...

  3. 卷积神经网络-Dropout

    dropout 是神经网络用来防止过拟合的一种方法,很简单,但是很实用. 基本思想是以一定概率放弃被激活的神经元,使得模型更健壮,相当于放弃一些特征,这使得模型不过分依赖于某些特征,即使这些特征是真实 ...

  4. Effective Java Chapter4 Classes and Interface

    MInimize the accessibility of classes and members 这个叫做所谓的 information hiding ,这么做在于让程序耦合度更低,增加程序的健壮性 ...

  5. python3自学第二天,模块,三元运算

    1.模块的认识. sys模块,os模块等 如何引入模块 import os cmd_res1=os.system("dir") # 执行命令dir,不保存结果 print(cmd_ ...

  6. TkbmMWFileClient产生的Timeout/error waiting for connection.

    当文件客户端TkbmMWFileClient产生这个错误,该怎么解决掉呢? 解决方法: 设置ConnectionWaitTimeout为更长时间,这个时间以毫秒为单位,设置20*1000,20秒.

  7. python Django rest-framework 创建序列化工程步骤

    11创建项目 2创建应用 3stting添加应用(apps)-添加制定数据库-修改显示汉字(zh-hans)-上海时区(Asia/Shanghai) 4主路由添加子路由 5应用里创建子路由 6创建数据 ...

  8. 2019-03-22-day017-re模块

    讲在课前 严格的执行每天的内容 学习的方法 记笔记 课上记框架 画思维导图 常用模块 30分钟 复习 翻笔记 2h 把课上的例子跟着都敲一遍 遇到不会的 自己研究5分钟 还不会 问问同学 再不会 问问 ...

  9. laravel 部署 前后端分离

    1. iis服务器配置(web.config): <configuration> <system.webServer> <rewrite> <rules> ...

  10. 使用matlab和ISE 创建并仿真ROM IP核

    前言 本人想使用简单的中值滤波进行verilog相关算法的硬件实现,由于HDL设计软件不能直接处理图像,大部分过程都是可以将图像按照一定的顺序保存到TXT文档中,经过Modelsim仿真后,处理的数据 ...