摘要:在信息化背景下,数据集成可以有效减少数据冗余,提高数据利用率,实现数据的互联共通。文章基于开源Kettle工具,采用Quartz设计并实现了一套B/S模式下具有用户管理、数据集成转换、图形化“拖拉拽”的在线数据集成平台。该平台实现了对ETL作业的统筹调度、监督和控制,从而提高应用程序开发的效率,有效降低开发和运维成本。
关键词:数据集成平台;数据抽取清洗载入;二次开发;Kettle;Quartz
中图分类号:TP311" 文献标志码:A
0 引言
大数据时代下,数据信息和错综复杂的数据逻辑爆炸式增长,数据将成为未来发展的新能源与动力[1]。但在实际应用中,各系统之间因数据格式和访问方法不同无法传输共享数据从而导致“数据孤岛”的难题。同时,许多数据抽取清洗载入(Extract Transform Load, ETL)软件大多为传统型软件,对客户端计算机软硬件配置要求较高,需要下载、安装和升级,开发维护成本高。因此,提供一个便捷高效的在线数据集成平台成为迫在眉睫的需求[2]。基于此,本文设计并实现了一套基于开源Kettle和Quartz的在线Web数据集成平台。
1 系统分析
1.1 系统可行性分析
1.1.1 经济可行性
本平台开发使用开源组件与框架,采用Tomcat一键部署,开发和部署经济成本低;同时,使用前后端分离程序结构,维护成本低。
1.1.2 技术可行性
本平台采用Kettle7.0作为ETL功能引擎、Spring Framework 3.2.9作为Web框架。Kettle是一款开源的ETL工具,对外提供许多应用程序编程接口(Application Programming Interface, API),适合二次开发扩展[3-4]。Spring Framework解决了Java代码和Servlet之间的耦合,优化了controller层[5-6]。作为本数据集成平台的表示层框架,Spring部署灵活、功能强大,为Web层开发提供了更加方便快速的支持,能够满足系统开发需要。
1.1.3 应用可行性
平台设计目的是提高数据利用效率,解决“数据孤岛”的问题以及缓解传统ETL工具多为C/S架构的困局,B/S架构对客户端计算机硬件配置要求较低且没有操作系统限制,具有广泛的应用实践价值。
1.2 系统功能分析
平台的总体目标是实现一款基于Web的数据集成平台,即设计一个基于B/S的ETL数据集成工具。主要实现以下几个功能:①实现不同关系型数据库、文件之间的数据集中、清洗、转换和传输。②实现在Web端通过“拖拉拽”方式实现对数据流程的配置与传输功能的控制。③实现对ETL任务进行综合性管理与监控。④实现对任务的定时调度。
2 系统设计
2.1 平台架构设计
本文提出的Web数据集成平台具备能在多种数据源、各种不同数据库或文件中抽取数据并进行转换、加载的功能。Web数据集成平台系统设计使用ExtJS、MXGraph、Spring MVC、Mybatis框架搭建B/S结构,重塑原生Kettle的架构结构,进行二次开发。Web平台界面采用ExtJS、MXGraph搭建图形化界面,拥有C/S结构的强交互性与转换各流程中数据连线和拖拽功能,同时采用Quartz和Spring作为任务调度方式,将元数据模式的ETL任务存放于系统资源库中,读取资源库ETL元数据,解析后将ETL任务通过MXGraph展现,实现了基于B/S架构开发ETL任务的功能。本平台通过Quartz定时框架可以对ETL任务进行管理及监控,对平台中运行的作业进行检测,实时监测任务执行进度。
数据集成平台总体框架使用3层架构,分别为Web前端展示层、Web后端处理层与底层基于Kettle内核的执行层,使用Quartz替换原生Kettle的调度监控模块,总体设计架构如图1所示。
2.2 平台模块设计
平台按功能划分为7个主要模块:模型管理模块、平台管理模块、任务管理模块、定时调度模块、日志管理模块、节点管理模块以及用户管理模块,如图2所示。
3 系统实现
3.1 前端页面实现
3.1.1 页面组件拖拽功能实现
本平台的重要功能是将Web框架Spring与MXGraph引擎进行整合实现拖拽功能,极大地方便用户进行数据转换和作业配置,完成数据操作。页面组件拖拽功能主要使用MXGraph框架核心类实现。核心类中createGraph方法用于生成MXGraph对象,通过MXGraph对象的insertEdge方法和insertVertex方法在转换模块背景区插入顶点和边框,同时使用setConnectable设置连线。实现拖拽功能重点是新建初始化Toolbar方法,遍历获取所有的dom组件项对象,将dom对应的组件项对象的宽高与JavaScript结合作为容器展现图形。平台调用makeDraggable方法,配置给定的dom元素充当指定图形的拖动源,随后给dom节点元素返回一个新的充当指定图形的mxDragSource。判断组件拖拽先使用动作监听器监听鼠标按下动作和鼠标所点击的图形坐标,然后监听鼠标按下的移动,启动startDrag函数。如果鼠标被监听为弹起,所选目标将被放置在鼠标下,最后启动stopDrag函数结束拖动,实现页面组件的拖拽功能。
3.1.2 任务模块
任务模块主要包含转换管理、作业管理、任务组管理和任务监控等功能,是集成平台的核心功能模块。转换管理模块可以使用拖拽方式对转换逻辑进行设计,同时还提供保存转换、运行转换、预览转换、调试转换、校验转换等功能按键。用户双击图形化组件,可以对组件进行配置;数据源数据表输入组件配置页面拥有编辑、新建、向导等功能;作业管理页面具有作业属性查看、编辑和作业定时等功能。
3.1.3 用户模块
用户模块用于平台用户管理,管理员用户登录平台时会提供添加用户的功能按钮,可选择创建管理员或普通用户。
3.1.4 平台模块
在平台模块中,仪表板组件显示了运行中的作业数、运行中的转换数、节点数量和定时作业的数量,用户可以随时查看平台操作中的作业。
3.1.5 模型模块
模型模块中转换管理配置数据源和目标后,用户可以执行其他配置,如转储任务的名称等。相关配置完成后,系统会显示当前配置的信息;用户确认配置后可以保存当前配置。平台检查配置有效性,主要是测试输入的信息是否标准,保存配置前是否填写了所需的项。有效性测试成功后,系统提示任务保存成功,任务创建结束,反之则提示错误,返回前一配置界面进行修改。模型模块可以对作业和转换进行新建操作。
3.2 后端处理层实现
后端处理层接收前端展示层的请求进行处理后,发放到执行层执行,起到承上启下的作用,也是3层架构中的核心部分。任务管理模块主要功能是负责任务的管理和作业的运行,对转换的过程进行调度。本平台转换模块采取低耦合、高扩展性的组件化开发。以CSV输入模块为例,如图3所示,CsvInput类继承AbstractStep并重写AbstractStep类的decode和encode方法;在encode方法中使用encode.setAttribute对Kettle中相应的CsvInputMeta进行参数设置,在decode方法中通过mxCell cell.getAttribute(String)进行配置,实现模块化开发。
3.3 执行层实现
Kettle的作业运行分为图形化运行和命令行运行。本平台采用Kettle内核作为ETL操作引擎,同时修改了Kettle的调度机制,由Quartz管理调度信息。将调度系统与Kettle分开,利用了Quartz调度框架[7]强大的可用性和可伸缩性,实现对任务的定时调度。Quartz定时作业使用与carte服务器交互的方式或调用Kettle API方式执行定时作业。
4 系统测试
4.1 平台环境
在线数据集成平台在Windows环境下开发,使用B/S架构,运行在服务器端,支持不同的运行环境。本平台上线运行可部署在Windows或Linux环境下,用户登录后可进行各项数据转换操作并查看平台各项操作情况,运行效果如图4所示。
4.2 平台转换模块测试
利用本平台对航空大数据集进行数据预处理作业,通过JDBC连接MySQL数据库测试成功,如图5(a)所示。用户可以在平台转换页面拖拉组件建立ETL数据处理流程对数据集进行去重操作,数据从Excel输入经过过滤记录组件、去除重复记录组件再输出到数据库表中,如图5(b)所示。通过使用航空公司数据集对转换模块进行测试,平台实际结果与预期结果一致,验证数据操作与转换模块ETL功能正常工作。
5 结语
本文设计并实现了Web数据集成平台底层引擎调用ETL工具Kettle的API,能在多种关系型数据库、非关系型数据库中进行数据集成操作,解决数据转换传输问题,提高应用程序开发的效率。数据集成平台使用B/S架构代替了传统软件的C/S架构,利用B/S架构高度自由化的特性,解决了传统ETL工具需要下载安装、占用用户时间与空间的问题。下一步研究工作是继续优化本平台数据转换的配置、支持传输的数据库和数据类型,完善数据集成平台的完整性以及可使用性。
参考文献
[1]顾胜勤.“数据化”将成为民航企业未来发展的强大动力[J].空运商务,2017(7):14-16.
[2]张春亮.基于ETL的企业数据交换平台的设计与实现[D].哈尔滨:哈尔滨工业大学,2016.
[3]赵建勋.基于Kettle的数据整合研究与实践[J].西安文理学院学报(自然科学版),2020(3):28-31,36.
[4]武晋飞.基于Kettle的铁路客运营销数据交换平台的设计与实现[J].铁路计算机应用,2019(11):27-31.
[5]张浩.SSM框架在Web应用开发中的设计与实现研究[J].电脑知识与技术,2023(8):52-54.
[6]张传国,王伶俐.基于MEAN+SpringMVC的服务管理平台的设计与实现[J].计算机科学,2017(增刊2):538-541.
[7]崔记东.基于Kettle和Quartz的数据集成平台的研究与实现[D].郑州:郑州大学,2019.
(编辑 王永超编辑)
Design and implementation of a Web data integration platform based on Kettle
ZHAO" Ji1, 2, WANG" Zehao1
(1.Wuxi City College of Vocational Technology, Wuxi 214000, China; 2. Big Data Intelligent Application
Engineering Technology Research and Development Center, Wuxi 214000, China)
Abstract: Under the background of informatization and Internet, data integration can effectively reduce data redundancy, improve data utilization, and achieve data interconnection. Based on open-source Kettle using Quartz, an online data integration platform in B/S mode with user management, data integration transformation, and graphical drag and drop is designed and implemented in this article. This platform realizes the overall scheduling, supervision, and control of ETL jobs, thus greatly improving the efficiency of application development and effectively reducing development and operation costs.
Key words: data integration platform; extract-transform-load; secondary development; Kettle; Quartz