欢迎来到天天文库
浏览记录
ID:26096735
大小:1.09 MB
页数:16页
时间:2018-11-24
《datax插件开发指南》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、WORD格式可编辑Linux公社(LinuxIDC.com)于2006年9月25日注册并开通网站,Linux现在已经成为一种广受关注和支持的一种操作系统,IDC是互联网数据中心,LinuxIDC就是关于Linux的数据中心。LinuxIDC.com提供包括Ubuntu,Fedora,SUSE技术,以及最新IT资讯等Linux专业类网站。DataX插件开发指南专业知识整理分享WORD格式可编辑版本号修改内容修改日期修改人V0.1创建2011-09-08何健超专业知识整理分享WORD格式可编辑目录一、概述4二、Reader插件开发(以httpreader为例)51、确定插件所需配置的
2、参数52、构建相应包和类结构53、实现重载方法74、自定义split方法10三、Writer插件开发(以streamwriter为例)131、确定插件参数、构建相应包和类结构132、实现重载方法14四、插件运行配置(以httpreader为例)161、注册插件162、修改build.xml文件,打包16专业知识整理分享WORD格式可编辑一、概述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流获取数据(常用于测试)6、httpreader
4、:支持从httpURL获取数据。提供的Writer插件如下:1、hdfswriter:支持向hdbf写入数据。2、mysqlwriter:支持向mysql写入数据。3、sqlserverwriter:支持向sqlserver写入数据。4、oraclewriter:支持向oracle写入数据。5、streamwriter:支持向stream流写入数据。(常用于测试)用户可以根据需要开发自己的Reader&Writer插件。现在以HttpReader和StreamWriter插件为例,使用eclipse分别说明Reader和Writer插件开发过程。专业知识整理分享WORD格式可编辑
5、一、Reader插件开发(以httpreader为例)1、确定插件所需配置的参数确定插件参数,并在common.plugin.ParamsKey.java中,创建静态类HttpReader,尤其注意对参数的注释尽量参照源码规范,DataX运行时,会根据此处声明的参数和注释生成对应的模板Job_xml.此处参数设置非常重要,如图:图12、构建相应包和类结构在源码文件的plugins.reader包下构建httpreader包,再在httpreader包下创建类HttpReader,并让之继承common.plugin.Reader.专业知识整理分享WORD格式可编辑图2专业知识整理
6、分享WORD格式可编辑图31、实现重载方法获得图3所示效果:现在开始分别实现init(),connectToDb(),startRead(LineSendersender),finish()四个方法。(1)Init():通过从Reader间接继承自DefaultPlugin的PluginParam类型的参数param获取配置httpreader插件的参数(此处可以对参数进行检查和格式处理等操作),如图:专业知识整理分享WORD格式可编辑图4(1)connectToDb():本插件不需要此操作,函数为空实现。(在数据库相关插件中,主要操作是通过DbSource.getConnect
7、ion(keyId)获取connection),如在mysqlreader中,该函数为:图5(2)startRead(LineSendersender):根据init()初始化的参数,连接相应的httpURL,获取其中数据并用BufferedReader封装,循环处理每行数据,调用sender.createLine()产生line,并通过line.addField(fieldStr)把每行数据切分成字段后组装成Line中的field,调用sender.sendToWriter(l
此文档下载收益归作者所有