RocketBus是一款基于Spark Sql/Spark Structured Streaming的ETL开发工具。它利用了Spark Sql/Spark Structured Streaming将一切包括batch source与streaming source在内的输入抽象为统一的DataFrame,在DataFrame基础上可以做到SQl化的方式来处理数据源,并对最终的输出也实现了统一的接口这一机制,实现了一款业务流程与程序逻辑完全分离的,配置优先于实现的,满足大数据平台ETL开发功能的工具。它有以下优点:
- 通过配置文件即可实现Spark批处理和流处理作业,无需开发Spark代码。
- 集成了常用的InputProcess和OutputProcess实现,如Kafka、Redis、File、HDFS、Mysql等。这些内置的Process实现已完全能够满足大部分业务场景,同时用户可以实现自定义的InputProcess和OutputProcess,轻松地加载到RocketBus作业中。
- 舍弃了更底层的Spark Rdd编程模型,而完全以Spark Sql编程模型为基础,虽然让RocketBus必须运行在新版本的Spark上(推荐Spark2.3.0以上),但也让这款工具更加轻便,不必因为兼容旧的版本而设计的太复杂,对第三方接口实现也会更加优化,因为仅需面向Spark Sql编程模型来开发。
- 约定优先于配置,配置优先于实现。 RocketBus作业配置参数完全依照Spark作业参数来设定,且还提供了管理维护作业所必须要的参数设置。通过标准化约定化的配置文件,用户无需关心背后的实现,而将主要精力集中于业务流程上。
- 一个配置文件对应一个作业。 用户想借助RocketBus配置一个作业,仅需按照约定提供一个配置文件,并按照相应的命令启动,同时传入配置文件 的所在路径即可。
- 一个作业的基本单位是Process(流程)。 在RocketBus的世界里,最基本的单位是Process。Process分为InputProcess、ComputeProcess、和OutputProcess三种。一个作业是由至少一个InputProcess,至少一个ComputeProcess和至少一个OutputProcess所构成。这些Process的彼此依赖关系共同构成一个作业的DAG图。
- 事物的共性比个性更重要。 我们所面对,所解决的主要是这类通用化,大众化的问题,基本上能满足绝大多数离线和实时作业。当然,对于个性化的问题,我们也做到求同存异,提供第三方接口标准,供实现定制化需求。
- 提供更优的而不是面面俱到的。 Spark SQL编程模型较老一代Spark Rdd优秀的地方在于它不仅统一了离线和实时作业编程接口,还对不同类型的输入、输出,以及中间的计算环节提供了统一的接口标准。而我们之所以大胆放弃兼容Spark2.0.0以下版本,完全是为了提供更好,更优的一套方案。Spark Rdd并未针对不同类型的输入、输出提供统一的接口标准,且参数配置,优化方面更繁琐。如果我们要同时兼容这两套API,必然用户在使用起来也是繁琐不友好的。况且Spark社区的主要精力也是放在了对于Spark SQL编程模型的优化上,所以此时我们没有必要做到向下兼容。
软件架构说明
- xxxx
- xxxx
- xxxx
- xxxx
- xxxx
- xxxx
- Fork 本仓库
- 新建 Feat_xxx 分支
- 提交代码
- 新建 Pull Request
- 使用 Readme_XXX.md 来支持不同的语言,例如 Readme_en.md, Readme_zh.md
- 码云官方博客 blog.gitee.com
- 你可以 https://gitee.com/explore 这个地址来了解码云上的优秀开源项目
- GVP 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目
- 码云官方提供的使用手册 https://gitee.com/help
- 码云封面人物是一档用来展示码云会员风采的栏目 https://gitee.com/gitee-stars/