在用Apache SeaTunnel研发SM2加密组件过程中,发现社区关于本地调试SeaTunnel文章过于简单,很多情况没有说明,于是根据自己遇到问题总结这篇文档。SeaTunnel本地调试官方文档,希望对大家有所帮助!

使用的引擎为Flink(不需要下载,SeaTunnel中有加载依赖),输入输出方式为:mysql to mysql

一、工具说明

1.idea2023.3.2

2.MySQL8.0.36

3.jdk1.8

4.seatunnel 2.3.4-release

二、开发前准备

1.从github拉下来代码

github地址:https://github.com/apache/seatunnel/

2.在控制台运行编译

编译指令为:

./mvnw clean install

file

      Apache  SeaTunnel2.3.3版本的编译可以参考大飞哥的博客4.2.1

3.创建数据库创建表

(注意,数据库不要使用mysql系统库(如:information\_schema,mysql,performance\_schema,sys),需要自己创建新的数据库,seatunnel会排除这些系统库,2.3.4新增,2.3.3没有这个判断)。

file

4.添加配置文件

在seatunnel-flink-connector-v2-example项目的resource/examples下添加需要运行的配置文件,并修改SeaTunnelApiExample.java指向的文件路径

file

test.json(seatunnel支持运行json和config格式的配置文件)

{
"env" : {

"job.name" : "test"

},
"source" : [ {

"query" : "select t.id,t.name,t.depId,t.salary from seatunnel.t_employee t",
"fetch_size" : 0,
"url" : "jdbc:mysql://localhost:3306/seatunnel",
"driver" : "com.mysql.cj.jdbc.Driver",
"user" : "root",
"password" : "123456",
"plugin_name" : "Jdbc",
"result\_table\_name" : "\_seatunnel\_table\_jdbc\_8"

} ],
"transform" : [ {

"original_text" : "name",
"plugin_name" : "Sm2Encrypt",
"result\_table\_name" : "\_seatunnel\_table\_sm2\_9",
"source\_table\_name" : "\_seatunnel\_table\_jdbc\_8"

} ],
"sink" : [ {

"database" : "seatunnel",
"table" : "t_employee",
"support\_upsert\_by\_query\_primary\_key\_exist" : true,
"generate\_sink\_sql" : true,
"primary_keys" : \[ "name" \],
"max_retries" : 3,
"batch_size" : 300,
"is\_exactly\_once" : false,
"url" : "jdbc:mysql://localhost:3306/seatunnel",
"driver" : "com.mysql.cj.jdbc.Driver",
"user" : "root",
"password" : "123456",
"plugin_name" : "Jdbc",
"source\_table\_name" : "\_seatunnel\_table\_sm2\_9"

} ]
}

 Sm2Encrypt是我自己研发的国密加密组件,自定义插件的代码可以参考SeaTunnel扩展Transform插件,自定义转换插件

5.添加maven

seatunnel-flink-connector-v2-example项目添加下列pom依赖并刷新maven,没有这些依赖会报错,连接方式用到什么就要添加什么,我这里使用的是connector-jdbc。如果source或sink用到http连接就需要添加connect-http依赖,具体有哪些可以看seatunnel-connectors-v2项目下的包

<dependency>

<groupId>org.apache.seatunnel</groupId>
<artifactId>connector-jdbc</artifactId>
<version>${project.version}</version>

</dependency>

因为使用的是mysql数据库,所以还需要引入mysql驱动

<dependency>

<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.27</version>

</dependency>

 三、本地调试

1.debug运行

debug运行SeaTunnelApiExample.java下的主类,

就可以在需要调试的地方断点调试了

file

2.执行结果

file

本文由 白鲸开源科技 提供发布支持!

海豚调度
89 声望22 粉丝

Apache DolphinScheduler是一个分布式去中心化,易扩展的可视化DAG工作流任务调度平台。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。