etl spring_Spring Batch与ETL工具比较-程序员宅基地

技术标签: etl spring  

在实际应用中,在批处理中用得较多的是场景是数据同步。在做数据集成工作中,常常需要从源位置把数据同步到目标位置,以便于进行后续的逻辑操作。在做这种批处理工具时,在网上查资料,发现用得比较多的是kettle及阿里的datax,对于这两款工具,各有各的优缺点。

kettle

kettle是一款可以可视化编程的开源ETL工具,把数据处理简化为Job和Transform,在Transform中,提供了各种数据读、写、转换、处理的工具。开发者仅需要以工具界面中拖拽相应的工具,进行步骤连接即可完成一个ETL工作,不同的工具及步骤结合起来可以形成相对复杂的作业流程,以完成ETL工作。它的优点就在于可视化编程,非常容易上手,对于不熟悉编程的人员来说,是一个福利。个人感觉针对简单(即逻辑判断和操作不多的)的ETL工作,是比较推荐用它。但缺点也有,一是易学难精,它提供的操作非常多,要把它们都熟悉而且做到相互结合来完成任务,是有一定难度的。二是对于一些复杂的的逻辑判断及操作,kettle虽然可以做,但操作起来就很复杂。三是不方便调试,尽管它内置有调试功能,但由于在转换中,操作都是并行的,单步调试比较难实现。四是内存消耗,本身kettle界面跑起来已经是比较耗内存的,而作业中数据量大的时候,内存消耗更大。

datax

DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS等各种异构数据源之间高效的数据同步功能。DataX本身作为数据同步框架,将不同数据源的同步抽象为从源头数据源读取数据的Reader插件,以及向目标端写入数据的Writer插件,理论上DataX框架可以支持任意数据源类型的数据同步工作。同时DataX插件体系作为一套生态系统, 每接入一套新数据源该新加入的数据源即可实现和现有的数据源互通。

DataX从架构上而言也是设计得很简洁的,它作为数据搬运工,支持任意数据类型的同步工作,跟Spring Batch有异曲同工之妙,DataX本身作为离线数据同步框架,采用Framework + plugin架构构建。将数据源读取和写入抽象成为Reader/Writer插件,纳入到整个同步框架中。 Reader:Reader为数据采集模块,负责采集数据源的数据,将数据发送给Framework。 Writer: Writer为数据写入模块,负责不断向Framework取数据,并将数据写入到目的端。 Framework:Framework用于连接reader和writer,作为两者的数据传输通道,并处理缓冲,流控,并发,数据转换等核心技术问题。

DataX本身也提供比较丰富的Reader和Writer,按它的文档,以它作为工具进行数据同步,还是比较简单的。而且有阿里的背书,可放心使用。不过缺点一是不常维护更新,github上最近的更新是去年(2018);二是二次开发有难度,我尝试跑源码,想做二次开发,虽然最终跑起来,但也费了不少力气。三是虽然架构清晰,但使用规则操作起来不是很灵活,基本是通过json配置文件,按规则进行配置,想自定义规则是不行的。

总体感受

相对而言,统合考虑易用性、可扩展性,灵活性,可编程性,Spring Batch会比较适合有点编程基础(特别是使用Spring及SpringBoot框架)的开发人员,针对业务编程,可自由发挥。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39718890/article/details/111808810

智能推荐

matlab速度梯度,[转载]关于FLUENT中Y+的一些讨论-程序员宅基地

文章浏览阅读1.6k次。一、关于 fluent计算时壁面函数法和网格的关系,还有一个小问题1:各位用 fluent的同仁和高手们,我想要比较好的使用 fluent软件,最重要的就是要学好理 论,在这里我想请教各位一个问题,在使用标准 k-eplison和一些其他的封闭模型时,对于近壁区的流动要使用壁面函数法求解。那么在划分网格时,是不是一定要把把第一个内节点布置在湍流充分发展的区域内呢?我们如果自动生成网格时,如果说第一..._fluent k-eplison

Xilinx Spartan-6 FPGA开发板硬件说明书(2)_xilinx sparta6两个指示灯-程序员宅基地

文章浏览阅读920次。8.LED指示灯开发板底板具有1个电源指示灯,以及1个DAC输出波形指示灯,它们分别是C67和C53。图 12图 13图 14图 15核心板具有1个电源指示灯,1个PROGRAM下载指示灯,以及2个用户可编程指示灯,分别是R7,R36,R41和R46。图 16核心板各个用户可编程指示灯对应的CPU引脚如下:表1 LED编号 FPGA管脚 KD1 ..._xilinx sparta6两个指示灯

weblogic配置java参数_修改weblogic jvm启动参数-程序员宅基地

文章浏览阅读1.5k次。进入:D:\Oracle\Middleware\user_projects\domains\base_domain\startWebLogic.cmd在call 上一行增加:set USER_MEM_ARGS=-Xms512m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=1024m例如:@ECHO OFF@REM WARNING: This file i..._wljrecm

程序员必须掌握的英文单词(一)_程序员需要掌握的英语-程序员宅基地

文章浏览阅读4.5k次,点赞29次,收藏131次。程序员英语单词册经过几天的整理将程序员必备的 600 词汇,和有关计算机需要掌握的词汇整理出来,分享给大家学习,希望对你有所帮助。程序员必备的 600 个英语词汇,对于时刻需要和国际接轨的码农们,英语的重要性是毋庸置疑的。尤其是那些胸怀大志的潜在大牛们,想在码农行业闯出一片天地,秒杀身边的小弟们,熟练掌握英语更是实现其目标最关键的因素之一。否则,试想在你捧着某出版社刚刚翻译出来的《JSP ..._程序员需要掌握的英语

vue在IE下报 webpack `Invalid Host/Origin header` 的问题_vue项目报不正确的请求头origin-程序员宅基地

文章浏览阅读295次。本次产生原因:IE某些版本不支持axios //为解决IE 不支持axios import Promise from 'es6-promise'; Promise.polyfill();引入es6-promise后,IE就出现如下错误:原因:应该是webpack出于安全考虑,因为不检查主机的应用程序容易受到DNS重新绑定攻击。但是,在我们的开发环境下,可以禁用掉disableHostCheck这一配置项。解决:在webpack.dev.config.js中..._vue项目报不正确的请求头origin

springboot3.0 整合mybatis-flex1.5.3_spring boot 集成mybatis-flex-程序员宅基地

文章浏览阅读840次。3,config类如果扫描不到,可以添加org.springframework.boot.autoconfigure.AutoConfiguration.imports。1,首先pom文件引入mybatis-flex依赖,mybatis-flex版本为1.5.3。2,创建config配置类,配置mapper的扫描路径,可以设置主键的生成方式等配置,4, 配置application.yml。6,启动测试类,进行测试。_spring boot 集成mybatis-flex

随便推点

pom.xml常用元素(maven)_pom.xml的namespace-程序员宅基地

文章浏览阅读1.8k次。 我想很多初学者对上图<project>标签内的:xmlns、xmlns:xsi、schemaLocation都表示不解,那么今天就科普一下它们代表的含义:xmlns:是xml的命名空间(XML Namespaces),为了避免元素命名冲突。目的是为当前的xml元素命名,以区别其他的同名元素。它有两种命名方式:xmlns="namespaceURI" 默认命名空间 xmlns..._pom.xml的namespace

【Java小项目练习】华容道-经典华容道游戏_头哥实践平台答案java华容道小程序之模拟曹操csdn-程序员宅基地

文章浏览阅读1k次。游戏玩法:可以通过鼠标点击选中人物,然后通过键盘 ↑ ↓ ← → 控制人物移动最后如果曹操处于最下方的正中间,那么就算游戏成功!那么我们看下代码怎么实现吧!..._头哥实践平台答案java华容道小程序之模拟曹操csdn

XML解析_xml文件解析-程序员宅基地

文章浏览阅读1.9k次,点赞6次,收藏6次。将XML文档转换为计算机程序可读取的格式的过程。XML文档中的元素、属性、实体等都需要被解析成程序能够理解的形式,以便程序能够对其进行处理和操作。1.2 解析方式(四种)1.2.1 DOM解析:DOM(文档对象模型)解析器将整个XML文档读入内存,并创建一个文档树,程序可以遍历该文档树并操作其中的节点。DOM解析器适用于文档相对较小的情况。_xml文件解析

j2ee与数据库有关的学习_j2ee java service query 数据库-程序员宅基地

文章浏览阅读234次。什么是JDBCJDBC的作用JDBC的编程步骤_j2ee java service query 数据库

STM32CUBEIDE USB下载总是连接不上 总是USBD_BUSY_if(usbdevcdc->cdctx.state != usbd_cdc_xfer_idle)-程序员宅基地

文章浏览阅读3.7k次,点赞4次,收藏29次。开发的时候总是在调用这个函数的时候发现 //总是会卡在return USBD_BUSY; uint8_t CDC_Transmit_HS(uint8_t* Buf, uint16_t Len){ uint8_t result = USBD_OK; /* USER CODE BEGIN 12 */ USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_..._if(usbdevcdc->cdctx.state != usbd_cdc_xfer_idle)

java分布式系统架构图,2022吊打面试官系列_java技术搭建的大型分布式异构系统-程序员宅基地

文章浏览阅读2.3k次。前言如果你不能拼爹,或者不想拼爹,最好的方法是拼实力。合抱之木,生于毫末;九层之台,起于垒土;千里之行,始于足下。所以,你必须要从基层做起。当然,所谓的基层,并不是端茶倒水,但多一些体验,总是无害的。前两年的时间,应当主要打好基础的累积,认清职业现状和社会经济发展趋势,适应工作后的生活,对心灵浮躁的洗涤。这一阶段最大的敌人是自身的态度,切忌不可眼高手低,牢记一句话——“心比天高,命比纸薄。”脚踏实地,一步一个脚印,为未来做好铺垫。一、分布式架构学习路线图据统计,人的阅读时间在20分钟以内是_java技术搭建的大型分布式异构系统

推荐文章

热门文章

相关标签