DataX二开引入一个自定义插件

1.在插件父包中添加一个新自定义插件结构如下图:

 2.在父级pom.xml配置文件中<modules>标签下添加一行配置

<module>subswebservicereader</module>

在父级package.xml中添加

<fileSet>
    <directory>subswebservicereader/target/datax/</directory>
    <includes>
        <include>**/*.*</include>
    </includes>
    <outputDirectory>datax</outputDirectory>
</fileSet>

3.修改自定义插件的配置文件:

package.xml

<assembly
	xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
	<id></id>
	<formats>
		<format>dir</format>
	</formats>
	<includeBaseDirectory>false</includeBaseDirectory>
	<fileSets>
		<fileSet>
			<directory>src/main/resources</directory>
			<includes>
				<include>plugin.json</include>
				<include>plugin_job_template.json</include>
			</includes>
			<outputDirectory>plugin/reader/subswebservicereader</outputDirectory>
		</fileSet>
		<fileSet>
			<directory>target/</directory>
			<includes>
				<include>subswebservicereader-0.0.1-SNAPSHOT.jar</include>
			</includes>
			<outputDirectory>plugin/reader/subswebservicereader</outputDirectory>
		</fileSet>
	</fileSets>

	<dependencySets>
		<dependencySet>
			<useProjectArtifact>false</useProjectArtifact>
			<outputDirectory>plugin/reader/subswebservicereader/libs</outputDirectory>
			<scope>runtime</scope>
		</dependencySet>
	</dependencySets>
</assembly>

修改plugin.json文件:

{
    "name": "subswebservicereader",
    "class": "此处是自定义java包路径.SubsWebserviceReader",
    "description": "dev version 1.0",
    "developer": "author"
}

其他文件根据项目自行修改即可。

### 如何DataX 自定义插件 #### 创建项目环境 为了创建DataX自定义插件发者需先设置好Java发环境并熟悉Maven构建工具。确保安装了JDK以及配置好了MAVEN_HOME等必要环境变量。 #### 定义插件框架 基于DataXPluginExample中的实践[^1],可以了解到每一个插件都应继承于`com.alibaba.datax.common.plugin.Job`类或是其子类之一来表示作业级别的组件;对于记录级的操作,则应该扩展`com.alibaba.datax.common.plugin.Task`或它的派生类。这有助于理解如何利用这些基类去建立自己的业务逻辑处理单元。 #### 编写Reader/Writer Reader端口用于从指定位置读取数据而Writer则负责向目标存储系统写出数据。以官方文档为例,在编写针对特定数据库系统的reader时,可能涉及到SQL查询语句定制化的能力[^2]。同样地,如果是要把数据导入至像HDFS这样的分布式文件系统中,就需要关注writer部分的设计与实现了[^3]。 ```java public class CustomReader extends Job { @Override public List<Configuration> split(int mandatoryNumber){ // 实现切分逻辑... } @Override protected void init() throws Exception{ // 初始化资源... } } ``` #### 配置JSON模板 完成上述编码工作之后,还需要准备一份描述该插件行为特性的json配置文件。这份文件会告诉DataX怎样调用我们刚刚编写的程序来进行实际的数据迁移操作。具体来说就是指定了source和destination两端的信息以及其他必要的参数设定。 ```json { "job": { "content":[ { "reader":{ "name":"custom_reader", "parameter":{ ... } }, "writer":{ "name":"hdfs_writer", "parameter":{ ... } } } ] } } ``` #### 测试验证 最后一步是测试所发出来的插件能否正常运作。可以通过命令行形式启动DataX服务,并传入之前编辑好的json路径作为输入参数来触发整个流程的执行过程[^4]。 ```bash python bin/datax.py job/custom_plugin_job.json ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值