datax插件开发指南

datax插件开发指南

ID:23490110

大小:1.08 MB

页数:16页

时间:2018-11-08

datax插件开发指南_第1页
datax插件开发指南_第2页
datax插件开发指南_第3页
datax插件开发指南_第4页
datax插件开发指南_第5页
资源描述:

《datax插件开发指南》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、~~Linux公社(LinuxIDC.com)于2006年9月25日注册并开通网站,Linux现在已经成为一种广受关注和支持的一种操作系统,IDC是互联网数据中心,LinuxIDC就是关于Linux的数据中心。LinuxIDC.com提供包括Ubuntu,Fedora,SUSE技术,以及最新IT资讯等Linux专业类网站。DataX插件开发指南~~~~~版本号修改内容修改日期修改人V0.1创建2011-09-08何健超~~~~~目录一、概述4二、Reader插件开发(以httpreader为例)51、确定插件所需配置的参数52、构建相应包和类

2、结构53、实现重载方法74、自定义split方法10三、Writer插件开发(以streamwriter为例)131、确定插件参数、构建相应包和类结构132、实现重载方法14四、插件运行配置(以httpreader为例)161、注册插件162、修改build.xml文件,打包16~~~~~一、概述DataX是一个在不同类型的数据库(文件系统)之间交换数据的工具,采用“框架+插件”的结构,框架相当于一个数据中转平台,而插件则为访问不同类型的数据库(文件系统)提供实现。DataX插件分为Reader和Writer两类。Reader负责从数据源端读

3、取数据到Storage(交换空间),Writer负责将Storage中的数据写入到数据目的端。Storage可以适配不同种类的Reader和Writer,从而实现数据同步。目前DataX版本已经提供的Reader插件如下:1、hdfsreader:支持从hdfs文件系统获取数据。2、mysqlreader:支持从mysql数据库获取数据。3、sqlserverreader:支持从sqlserver数据库获取数据。4、oraclereader:支持从oracle数据库获取数据。5、streamreader:支持从stream流获取数据(常用于测

4、试)6、httpreader:支持从httpURL获取数据。提供的Writer插件如下:1、hdfswriter:支持向hdbf写入数据。2、mysqlwriter:支持向mysql写入数据。3、sqlserverwriter:支持向sqlserver写入数据。4、oraclewriter:支持向oracle写入数据。5、streamwriter:支持向stream流写入数据。(常用于测试)用户可以根据需要开发自己的Reader&Writer插件。现在以HttpReader和StreamWriter插件为例,使用eclipse分别说明Read

5、er和Writer插件开发过程。~~~~~一、Reader插件开发(以httpreader为例)1、确定插件所需配置的参数确定插件参数,并在common.plugin.ParamsKey.java中,创建静态类HttpReader,尤其注意对参数的注释尽量参照源码规范,DataX运行时,会根据此处声明的参数和注释生成对应的模板Job_xml.此处参数设置非常重要,如图:图12、构建相应包和类结构在源码文件的plugins.reader包下构建httpreader包,再在httpreader包下创建类HttpReader,并让之继承common

6、.plugin.Reader.~~~~~图2~~~~~图31、实现重载方法获得图3所示效果:现在开始分别实现init(),connectToDb(),startRead(LineSendersender),finish()四个方法。(1)Init():通过从Reader间接继承自DefaultPlugin的PluginParam类型的参数param获取配置httpreader插件的参数(此处可以对参数进行检查和格式处理等操作),如图:~~~~~图4(1)connectToDb():本插件不需要此操作,函数为空实现。(在数据库相关插件中,主要操

7、作是通过DbSource.getConnection(keyId)获取connection),如在mysqlreader中,该函数为:图5(2)startRead(LineSendersender):根据init()初始化的参数,连接相应的httpURL,获取其中数据并用BufferedReader封装,循环处理每行数据,调用sender.createLine()产生line,并通过line.addField(fieldStr)把每行数据切分成字段后组装成Line中的field,调用sender.sendToWriter(line)将此行数据

8、写入Storage。如图:~~~~~图6(1)finish():本插件不需要此操作,函数实现为空。(在数据库相关插件中,主要完成关闭connection操作。)如在

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。