Tlink介绍

Test Flink Streaming SQL

本地执行flink streaming SQL快速进行验证,不依赖任何额外组件,帮助业务人员提高SQL开发效率。项目地址请在github中检索tlink。代码传送门

快速上手

tlink.properties内容如下,是运行一个sql需要配置的最小集,默认产生数据的字段为user,product,amount

tlink.streaming.sql.statement=SELECT user, product, SUM(amount) as amounts FROM Orders GROUP BY user, product
tlink.sink.table.fieldNames=user,product,amounts
tlink.sink.table.fieldTypes=LONG,STRING,INT
tlink.sink.table.type=Retract

执行sh build.sh进行编译,会在build文件夹下面生成tlink目录

进入tlink目录执行下面命令

sh bin/tlink /opt/tlink/conf/tlink.properties

在控制台就可以看到类似如下的输出,会显示发送的数据以及sql运行的结果

sand data:3,foo,2
Result:(true,3,foo,2)
sand data:9,baz,4
Result:(true,9,baz,4)
sand data:9,foo,7
Result:(true,9,foo,7)
sand data:6,baz,6
Result:(true,6,baz,6)
sand data:2,foo,8
Result:(true,2,foo,8)
sand data:3,foo,8
Result:(false,3,foo,2)

基于Event time窗口的SQL可以参见下面的配置

tlink.streaming.sql.statement=SELECT user, TUMBLE_START(rowtime, INTERVAL '5' SECOND) as wStart,  SUM(amount)  FROM Orders GROUP BY TUMBLE(rowtime, INTERVAL '5' SECOND), user

tlink.source.table.fieldNames=user,product,amount,rowtime.rowtime
tlink.source.table.fieldTypes=LONG,STRING,INT,LONG
tlink.source.eventTime.index=3
tlink.streaming.sql.env.timeCharacteristic=EVENT
tlink.sink.table.fieldNames=user,wStart,amounts
tlink.sink.table.fieldTypes=LONG,SQL_TIMESTAMP,INT
tlink.sink.table.type=Append

如果要使用blink planner请参见tlink-topN.properties配置

如果要使用多流join请参考tlink-join.properties配置

特性

目前1.0.0版本支持如下特性

  1. 支持基于event time和processing time的窗口
  2. 支持随机产生数据
  3. 支持指定文件的方式产生数据
  4. 支持blink planer
  5. 支持2个流join、UnionAll等sql
  6. 支持通过ddl的方式创建数据源,目前只支持connector.type为filesystem

参数说明

参数 默认值 含义
tlink.source.table.names 非必填,默认值Orders 数据源注册的表名,最多支持2个表,表名用逗号分割
tlink.source.table.fieldNames 非必填,默认值user, product, amount 数据源字段名
tlink.source.table.fieldTypes 非必填,默认值LONG, STRING, INT 数据源字段类型
tlink.source.eventTime.index 如果使用event time必填 event time字段在所有字段中的位置
tlink.source.watermark.maxOutOfOrderness 如果使用event time必填,默认值10000毫米 最大允许延迟时间
tlink.source.producer.mode 非必填,默认值random 产生数据的方式,可选值random或者file或者DDL
tlink.source.producer.sql.statement 非必填,默认值random 产生数据的SQL语句
tlink.source.producer.file.path 如果上面参数配置file,必填 数据文件绝对路径
tlink.source.producer.total 非必填,默认20 随机模式下总共产生的数据量
tlink.source.producer.interval.ms 非必填,默认1000毫秒 产生数据的固定时间间隔,如果不配置,采用下面的随机时间间隔
tlink.source.producer.interval.random.startInclusive 非必填,默认值1 默认含义为RandomUtils.nextLong(1,5)*1000
tlink.source.producer.interval.random.endExclusive 非必填,默认值5 默认含义为RandomUtils.nextLong(1,5)*1000
tlink.source.producer.interval.random.factor 非必填,默认值1000 默认含义为RandomUtils.nextLong(1,5)*1000
tlink.source.producer.string.values 非必填,默认值foo, bar, baz 字符串字段候选数据集,随机选择一个作为string类型字段的值
tlink.source.producer.long.random.startInclusive 非必填,默认值1 默认含义为RandomUtils.nextLong(1,10)*1
tlink.source.producer.long.random.endExclusive 非必填,默认值10 默认含义为RandomUtils.nextLong(1,10)*1
tlink.source.producer.long.random.factor 非必填,默认值1 默认含义为RandomUtils.nextLong(1,10)*1
tlink.source.producer.int.random.startInclusive 非必填,默认值1 默认含义为RandomUtils.nextInt(1,10)*1
tlink.source.producer.int.random.endExclusive 非必填,默认值10 默认含义为RandomUtils.nextInt(1,10)*1
tlink.source.producer.int.random.factor 非必填,默认值1 默认含义为RandomUtils.nextInt(1,10)*1
tlink.source.producer.timestamp.random.startInclusive 非必填,默认值1 默认通过RandomUtils.nextLong(1,10)*1000产生一个随机数,如果是偶数当前时间戳减去这个随机数作为event time,如果是奇数当前时间戳加上这个随机数作为event time
tlink.source.producer.timestamp.random.endExclusive 非必填,默认值10 默认通过RandomUtils.nextLong(1,10)*1000产生一个随机数,如果是偶数当前时间戳减去这个随机数作为event time,如果是奇数当前时间戳加上这个随机数作为event time
tlink.source.producer.timestamp.random.factor 非必填,默认值1000毫秒 默认通过RandomUtils.nextLong(1,10)*1000产生一个随机数,如果是偶数当前时间戳减去这个随机数作为event time,如果是奇数当前时间戳加上这个随机数作为event time
tlink.sink.table.name 非必填,默认值Output 输出表的名字
tlink.sink.table.fieldNames 必填,无默认值 输出字段
tlink.sink.table.fieldTypes 必填,无默认值 输出字段类型
tlink.sink.table.type 必填,无默认值 输出表的类型,可选值为Append或者Retract
tlink.streaming.sql.env.parallelism 非必填,默认值1 并行度
tlink.streaming.sql.env.timeCharacteristic 非必填,默认值PROCESSING 设置使用那种时间机制,可选值为EVENT或者PROCESSING
tlink.streaming.sql.env.planner 非必填,默认值old 设置planner,可选值为old或者blink
tlink.streaming.sql.statement 必填,无默认值 要执行的sql语句
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,658评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,482评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,213评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,395评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,487评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,523评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,525评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,300评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,753评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,048评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,223评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,905评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,541评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,168评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,417评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,094评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,088评论 2 352

推荐阅读更多精彩内容

  • 家庭教育原本应该是多关心子女的健康状况和培养子女养成良好的行为习惯,可越来越多的家长把家庭教育的重心转...
    宁静致远一张建新阅读 346评论 0 2
  • 丨文丨古白羽 今儿,小张水村真热闹。 几百年不遇的事。省里大医院派专家来山区,为父老乡亲解决就医治病难的问题。 医...
    传统悟人生阅读 396评论 7 1
  • 原文回答知乎贴:HR 在评估一个年轻应聘者时,会因为怎么样的品质、能力或特点而不犹豫地加以录用?答案链接 在人力资...
    宁小南阅读 978评论 1 11
  • 愁来愁去, 人生还是那么样一个人生, 世界也还是那么样一个世界。 ——朱光潜 有的时候,你会莫名的忧虑与急燥。 觉...
    无题与小人物阅读 194评论 0 1
  • 恍恍惚惚间,就忘记了时光留下的痕迹 渐行渐远的时候,才发现,一个的身影很长很长 漫过天际的一朵花,不由分说的就开始...
    冯玙哲阅读 235评论 0 2