导读

来自数数科技的大数据工程师 王健达 为我们带来了 《Apache SeaTunnel Examples 模块的使用和设计初衷》。在讲述如何遇见Apache SeaTunnel以及Examples 模块的使用和设计初衷以外,王健达还将向大家分享他作为开源贡献者参加社区活动的经历与故事。

个人简介

Profile

王健达,数数科技资深大数据工程师,就职于数数科技的大数据研发部门,主要负责数数科技二次开发和数据集成体系的研发工作。

本次分享分为三个部分:

  • 初识Apache SeaTunnel (Incubating)

  • Examples模块设计与使用

  • 我与开源社区

01 初识 SeaTunnel

首先我来讲一下我是怎么接触到Apache SeaTunnel (Incubating)的。我就职的数数科技主要深耕游戏行业,研究用户行为分析,为客户提供大数据智能分析平台。

上图左下角是我们平台的功能模块划分/架构层级图,可以分为数据接入层、业务应用层、实时计算层、数据持久层、以及运维监控层。最开始我主要从事实时计算和数据接入方面的开发工作,但是随着数据集成需求的日益暴增,我开始着手公司的二次开发和数据集成平台的研发。

二次开发和数据集成平台的定位是公司产品和客户业务系统的数据路由,既能完成产品内部的数据循环,也可以完成与外部系统的数据交换,满足用户高效稳定的数据流转需求。

数据同步场景包括广告、变现、ROI打通。

行业内有一个热度很高的数据集成需求,即游戏内用户行为数据与广告成本和广告变现数据的打通,实现ROI等计算分析。图中中间部分的模块就是我们系统标配的用户行为分析数据,一般用户会将其游戏内的行为数据上报到我们的系统中。左边的模块是引流渠道成本,比较常见的平台有appsflyer和adjust,这些平台会将他们所需要的引流成本数据通过集成平台接入到我们的系统中。

右边的广告收益平台,例如ironSource、TopOn等,会把这部分的广告收益也接入到我们的分析平台中,打通整个游戏数据与广告成本变现数据的闭环。这时只需要通过计算游戏内付费广告收益,除以广告成本,就可以得到我们经常说的RIO指标,我们用的是DataX。

但随着客户规模和用户体量的扩大,出现了很多问题,为了解决问题,我在调研中接触到了Apache SeaTunnel (Incubating)。

DataX VS SeaTunnel

DS

这是我对于 DataX VS SeaTunnel 的对比总结。

因为SeaTunnel支持Spark和Flink引擎,天生就支持分布式读取和写入,而DataX的分布式需要付费才可以使用。

在性能上,依托于Flink和Spark框架,在某些特定的场景下,SeaTunnel的性能可以高出DataX数倍,而DataX就受限于单点服务器的性能。

在数据量支持上,SeaTunnel可以随着计算引擎的扩容而横向扩展,而DataX在遇到数据量特别大时只能选择将服务器升配,但这种纵向的扩容从成本或者操作便利性上都不易操作。

最后对比扩展性,在支持读取和写入的数据源上,SeaTunnel和DataX都很丰富,但是在transform支持上,DataX开源版只有简单的单列处理函数,很难像SeaTunnel一样使用SQL或其他方式对数据源数据进行转换、聚合、加工等操作。

SeaTunnel初印象

DS

第一点是多引擎,SeaTunnel既支持Flink又支持Spark,这对于技术栈丰富的使用者来说是非常友好的,不用做二选一的抉择,而且SeaTunnel可以从应用侧屏蔽使用者对底层计算引擎的感知,通过应用封装,再配合例如动态资源分析等方式,把数据同步任务分发到负载相对合理的计算集群,完成相应的数据同步工作。

第二是简单易用。SeaTunnel通过简单的配置就可以完成数据同步工作,为后续的可视化配置打下了很好的基础。

第三是丰富的数据源,这个得益于社区中小伙伴的踊跃贡献,现在已经支持几十种数据源的读写。

最后就是Apache孵化,一个稳定的团队和积极的社区,都会成为大家在做技术选型的时,一个很重要的考量标准。

02 Examples 模块设计与使用

我们为什么在SeaTunnel中增加Examples模块?

首先是为了达到快速运行,直观反馈的效果。

第二点,提供便捷的本地开发和调试环境,不用打包部署调试,或在IDE中远程debug代码,而是可以直接在本地进行,也会方便debug框架中的代码。针对自己的业务增加数据源插件时,也会很方便地进行调试和验证。

Examples 模块设计和实现

DS

Example到目前为止分为三个部分:

  • Flink Examples模块

  • Spark Example模块

  • Flink SQL Examples模块(最近新增)

实机演示(8:14s-14:14s)

接下来我为大家演示一下,当拿到代码后,如何运行Examples模块,以及配置,文件结构和注意事项。

Flink Example 演示

首先来运行一下Flink Example的代码。代码主要分为三个部分,第一个部分是配置加载,第二个部分是参数加载,第三个部分就是SeaTunnel context运行。

把它转起来以后会出现很多输出,为什么会有这些输出呢?我们来看一下配置文件。

SeaTunnel的配置文件主要分为四个部分,第一部分是环境,你可以根据Flink部署模式,例如Local,或者是application或session、Yarn方式来选择环境参数。第二部分是数据源,本次演示使用了FakeSourceStream,主要用来模拟生成两个字段,name和age。第三部分是transform,可以通过SQL方式进行转换、过滤和聚合。最后的sink是一个ConsoleSink,它可以把你要调试的结果打印在控制台上。

现在我们可以获取一个变量,FakeSourceStream,然后copyvalue全局搜索一下,就可以看到,在做插件开发时,重写一个方法getPluginName。这样在整个SeaTunnel context加载过程中,它就会动态地根据配置文件,加载相关的插件,能够很方便地debug,我们对于框架的感知就会更真实。

继续执行命令会跳转到fakesource插件里,模拟输出数据,生成一个名为Gary的数据。跳过断点,就可以很方便地在控制台输出,得到debug需要获取的信息。其他模块操作过程类似。

再来看一下Flink SQL 的配置文件。Flink SQL 的配置文件会把读取端和写入端模拟成两张表,可以认为是两张表之间的数据同步,读取端表为event table,写入表为print table,中间transform是一个insert select语句。结合输出结果,大家可以看到看到f_type里有各种各样的数值,当程序停掉,加一个where条件,f_type = 1之后,可以再次运行这个类,可以看到只有f_type=1 的记录打印在控制台,其他记录已被过滤。

Spark example演示

再看一下Spark example。Spark example模块的配置文件是批量的,会在整个数据流结束之后自动退出,这也就体现了SeaTunnel的另一个特点,流批一体,既可以完成批量的数据同步任务,也可以完成流式的数据同步任务。

调试中需要注意的点,是当你自己开发新插件时,一定要在自己的example模块里,把pom文件中的SeaTunnel connector部分,依赖上自己开发的插件中,这样会方便调试,否则可能会报出插件无法加载等错误信息。

03 我与开源社区

接下来分享一下我参与开源社区的感受和故事。

我第一次参与开源是在2020年,那时由于公司需要调研一款调度系统,我第一次接触到了海豚调度,配置的过程并不顺利,后来定位到了问题所在,是因为配置文件需要区分大小写,如果不注意,配置文件加载时就会报错。

当时我抱着试一试的态度提交了优化。提交之前,我做了很多工作,例如如何做style check,如何订阅开发者邮件列表,如何了解开源项目的分支管理,如何提交pull request。花时间提交上去之后,就是焦急等待被merge的过程。用一句诗来形容一下merge前的心理,就是“思悠悠,恨悠悠,恨到归时方始休”。后来通过微信群和邮件沟通,交流很方便,在社区小伙伴的帮助和review下,我的PR终于被merge。这是一次很友好的鼓励,合并完之后,我的心情就用可以用“仰天大笑出门去,我辈岂是蓬蒿人”来形容。这是我第一次做开源贡献的心路历程,也是一个开源小白接触到了开源的过程。

参与开源社区,我有三点感受:

  1. 每个优化都有价值,不要忧虑这个优化值不值得提交,社区的进步是大家一行一行代码推动的。每一个想法,每一个优化都有它的价值;

  2. 在帮助别人中成就自己,帮助小伙伴排查解决问题的过程中,你会打磨你排查问题的思路,历练你的技能,同时还会得到小伙伴的认可;

  3. 收获信心,收获友谊,自己贡献的功能,能被非常多的人用到,无疑是技术人收获信心,收获成就感的点,在社区交流和互相协助过程中也会收获友谊。

在最后,把一句话送给大家:社区里有这样一群人,他们热情,他们善良,他们不计得失,他们只为创造。这就是我本次要分享的内容,也期待以后有机会和大家一起合作、创造。

Apache SeaTunnel

//  保持联络 //

微信号 : Seatunnel

来,和社区一同成长!

Apache SeaTunnel(Incubating) 是一个分布式、高性能、易扩展、用于海量数据(离线&实时)同步和转化的数据集成平台。

仓库地址: 

https://github.com/apache/incubator-seatunnel

网址:

https://seatunnel.apache.org/

Proposal:

https://cwiki.apache.org/confluence/display/INCUBATOR/SeaTunnelProposal

Apache SeaTunnel(Incubating) 2.1.0 下载地址:

https://seatunnel.apache.org/download

衷心欢迎更多人加入!

能够进入 Apache 孵化器,SeaTunnel(原 Waterdrop) 新的路程才刚刚开始,但社区的发展壮大需要更多人的加入。我们相信,在「Community Over Code」(社区大于代码)、「Open and Cooperation」(开放协作)、「Meritocracy」(精英管理)、以及「多样性与共识决策」等 The Apache Way 的指引下,我们将迎来更加多元化和包容的社区生态,共建开源精神带来的技术进步!

我们诚邀各位有志于让本土开源立足全球的伙伴加入 SeaTunnel 贡献者大家庭,一起共建开源!

提交问题和建议:

https://github.com/apache/incubator-seatunnel/issues

贡献代码:

https://github.com/apache/incubator-seatunnel/pulls

订阅社区开发邮件列表 : 

dev-subscribe@seatunnel.apache.org

开发邮件列表:

dev@seatunnel.apache.org

加入 Slack:

https://join.slack.com/t/apacheseatunnel/shared_invite/zt-123jmewxe-RjB_DW3M3gV~xL91pZ0oVQ

关注 Twitter: 

https://twitter.com/ASFSeaTunnel

往期推荐

点击阅读原文,成为Meetup讲师!

打通大数据变现渠道,SeaTunnel Examples 模块设计实现与使用实操相关推荐

  1. 傅一平:运营商的大数据变现实践

    3月29日,由东湖大数据发起.数据观作为合作媒体参与的大数据百人会·线上沙龙第9期活动圆满结束,浙江移动大数据中心傅一平博士就<运营商大数据变现实践>主题与大家分享了数据利用的心得与经验, ...

  2. 和合共生,聚势谋远——云创大数据教育渠道大会隆重举行!

    2017年12月8日,由云创大数据主办,Intel与日立协办的教育渠道大会在宁隆重举行,本次大会得到了业界的广泛关注,150余位业界同仁与渠道合作伙伴莅临本次大会,畅聊产品,寻求机遇,共谋发展. 大会 ...

  3. 大数据变现的九种商业模式

    如今,走到哪都在提大数据,我们周围无处不存在大数据的概念,那么究竟大数据如何转变成价值,如何实现其应有的功能,个人觉得下面这篇文章介绍的很好,转过来供大家分享: 在大数据成为趋势,成为国家战略的今天, ...

  4. 大数据变现,这里有9种商业模式,你走的哪条路?

    在大数据成为趋势,成为国家战略的今天,如何最大限度发挥大数据的价值成为人们思考的问题.无论是对于互联网企业.电信运营商还是数量众多的初创企业而言,大数据的变现显得尤为重要.谁最先一步找到密码,谁就能够 ...

  5. 大数据变现四种途径,如何把海量数据变成现金?

    大数据变现四种途径,如何把海量数据变成现金? 胡敏 • 2015-06-12 09:42 摘要: 西班牙电信.沃达丰电信.DHL等握有巨量数据的企业都在尝试不同的方式把数据变成现金. 大数据变现是大数 ...

  6. 五年数字大屏之路,“述说”着我们大数据变现怎样的故事?(附演示视频)...

    这是傅一平的第303篇原创 作者:傅一平 个人微信:fuyipingmnb "与数据同行"开通了微信群,现已汇聚了1500位小伙伴了,加我为微信好友(微信号:fuyipingmnb ...

  7. 消除数据信息碎片化 打通大数据应用“最后一公里”

    大数据.人工智能和人类智慧,成为智能数据时代的三大要素.数据的积累,可以为人类提供更多更细的洞察分析,人类经验得以增强,人类智慧得以增长. 消除数据信息碎片化 打通大数据应用"最后一公里&q ...

  8. 基于大数据的旅游数据分析系统的设计与实现

    基于大数据的旅游数据分析系统的设计与实现 摘    要 网络技术的不断发展,使网络成为人们的日常生活中不可缺少的一部分,而旅游数据分析系统是网络的一种新型体现,它以其特有的便捷和快速的特点得到了广泛的 ...

  9. 基于云计算和大数据的图书馆 应用系统建设设计

    1 序言 随着世界的发展,人们对计算机性能的要求越来越高.以前人们把重点都放到了提升单台计算机性能上面,但如今单台计算机的性能已经到达了瓶颈,而人们对计算机性能的需求却越来越强烈.近几年,随着新技术的 ...

  10. 专题导读:新工科背景下的大数据人才培养及课程体系设计

    专题:新工科背景下的大数据人才培养及课程体系设计 导读: 当今社会已进入大数据时代,为了顺应时代发展的潮流,国内外各类高校陆续开始聚焦大数据,布局新学科,加快人才培养的步伐.目前教育部已经正式批 准2 ...

最新文章

  1. 编码小记(未整理-持续更新)
  2. [导入]ubuntu全面介绍 与 ubuntu截图
  3. Leetcode 313. 超级丑数 解题思路及C++实现
  4. 北京图王软件开发有限公司产品介绍
  5. querySelector() 选择器语法
  6. 2018年计算机数据结构试题答案,2018年数据结构期末考试题及答案.pdf
  7. SRA数据下载以及转换格式
  8. RateLimiter限流
  9. Android netd和Framework以及netd和kernel之间的通信
  10. lua牛牛算法和大小比较
  11. android 文件保存到应用和sd卡中
  12. Failed to obtain JDBC Connection;
  13. [C#] [GIS] 关于椭球七参数和高斯投影正反算的一些总结
  14. AMD:无限你我的无限
  15. 东方财富通快捷键一览
  16. java 调用打印机
  17. android机开应用速度慢,Android机跑好慢 学会这秘密五招手机瞬间加速!
  18. windows映像劫持技术
  19. 《大型网站技术架构》——第三章 大型网站核心架构要素
  20. 软件测试的岗位会越来越少吗?饱和了?

热门文章

  1. kafka日志文件保留及自动重置消费位移相关配置验证
  2. [VB.NET]急死!2005中如何更新数据源,老鸟帮帮手,立马揭帖
  3. 百年病态集论的症结:几百年将两异直线段误为同一线段
  4. 如何解决网络负面信息呢?
  5. 一年后 php_php 一年后,一月后,一日后,一年前,一月后,一周后
  6. go字符串去除首尾所有空格
  7. 【算法竞赛】蓝桥杯Python组快速入门指南
  8. BD第8课:胸罩颜色和上胸围销售比例和分布
  9. 我的人生算法之“概率思维”
  10. 发作性睡病有哪些注意事项?