收藏 分销(赏)

DataX插件开发指南.doc

上传人:丰**** 文档编号:3134713 上传时间:2024-06-19 格式:DOC 页数:16 大小:1.08MB 下载积分:8 金币
下载 相关 举报
DataX插件开发指南.doc_第1页
第1页 / 共16页
DataX插件开发指南.doc_第2页
第2页 / 共16页


点击查看更多>>
资源描述
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为例) 5 1、 确定插件所需配置的参数 5 2、 构建相应包和类结构 5 3、 实现重载方法 7 4、 自定义split方法 10 三、 Writer插件开发(以streamwriter为例) 13 1、 确定插件参数、构建相应包和类结构 13 2、 实现重载方法 14 四、 插件运行配置(以httpreader为例) 16 1、 注册插件 16 2、 修改build.xml文件,打包 16 一、 概述 DataX是一个在不同类型的数据库(文件系统)之间交换数据的工具,采用“框架+插件”的结构,框架相当于一个数据中转平台,而插件则为访问不同类型的数据库(文件系统)提供实现。 DataX插件分为Reader和Writer两类。Reader负责从数据源端读取数据到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 : 支持从http URL获取数据。 提供的Writer插件如下: 1、 hdfswriter :支持向hdbf写入数据。 2、 mysqlwriter :支持向mysql写入数据。 3、 sqlserverwriter:支持向sqlserver写入数据。 4、 oraclewriter :支持向oracle写入数据。 5、 streamwriter :支持向stream流写入数据。(常用于测试) 用户可以根据需要开发自己的Reader & Writer插件。现在以HttpReader 和StreamWriter插件为例,使用eclipse分别说明Reader和Writer插件开发过程。 二、 Reader插件开发(以httpreader为例) 1、 确定插件所需配置的参数 确定插件参数,并在common.plugin.ParamsKey.java中,创建静态类HttpReader,尤其注意对参数的注释尽量参照源码规范,DataX运行时,会根据此处声明的参数和注释生成对应的模板Job_xml.此处参数设置非常重要,如图: 图 1 2、 构建相应包和类结构 在源码文件的plugins.reader包下构建httpreader包,再在httpreader包下创建类HttpReader,并让之继承common.plugin.Reader. 图 2 图 3 3、 实现重载方法 获得图3所示效果:现在开始分别实现init( ), connectToDb( ), startRead(LineSender sender), finish( ) 四个方法。 (1) Init( ):通过从Reader间接继承自DefaultPlugin的PluginParam类型的参数param获取配置httpreader插件的参数(此处可以对参数进行检查和格式处理等操作),如图: 图 4 (2) connectToDb( ): 本插件不需要此操作,函数为空实现。(在数据库相关插件中,主要操作是通过DbSource.getConnection(keyId)获取connection),如在mysqlreader中,该函数为: 图 5 (3) startRead(LineSender sender):根据init( )初始化的参数,连接相应的http URL, 获取其中数据并用BufferedReader封装,循环处理每行数据,调用sender.createLine() 产生line,并通过line.addField(fieldStr)把每行数据切分成字段后组装成Line中的field,调用sender.sendToWriter(line)将此行数据写入Storage。如图: 图 6 (4) finish():本插件不需要此操作,函数实现为空。(在数据库相关插件中,主要完成关闭connection操作。)如在mysqlreader中,该函数为: 图 7 4、 自定义split方法 截止到目前,已经实现了一个简单的httpreader(从一个http URL读取数据),目前还未实现读取多个http URL的功能,为此,可以在common.plugin.ParamsKey.java中的静态类HttpReader中,添加如下两项: 图 8 然后让httpreader插件覆盖默认的split(PluginParam param)方法。操作如下: (1) split(PluginParam param)方法对param按照规则切分,生成List<PluginParam>,DataX框架会根据此List产生插件实例执行任务。 图 9 (2) 为了清晰结构或者切分规则复杂,建议再构建类HttpURLSplitter辅助split方法实现切分,该类需要继承Splitter: 图 10 图 11 实现init( )方法和split( )方法即可: 图 12 三、 Writer插件开发(以streamwriter为例) 1、 确定插件参数、构建相应包和类结构 与Reader插件类似,略过,截图如下: 图 1 图 2 图 3 2、 实现重载方法 (1) init( ) 、connectToDb()、finish( )三个方法与Reader中意义相似,此处略过。 (2) commint( ) :本插件不需要此操作,函数实现为空。(在数据库相关插件中,主要完成提交任务操作。) (3) startWrite(LineReceiver linereceiver) :根据init( )初始化的参数,按照streamwriter插件配置信息,把linereceiver从Storage获取的数据通过xxx方法写入line中,循环处理每行数据(此处处理方式为直接输出),即可。如图: 图 4 四、 插件运行配置(以httpreader为例) 1、 注册插件 在conf/plugins.xml中,添加如下配置项,以注册插件: 图 1 2、 修改build.xml文件,打包 图 2
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服