使用idea调试seatunnel自定义插件

本文详细介绍了如何在ApacheSeaTunnel项目中使用SM2加密组件进行本地调试,包括环境准备、代码配置、依赖管理以及IDEA中的调试步骤,适合开发者在实际项目中参考。
摘要由CSDN通过智能技术生成

        在用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

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

3.创建数据库创建表

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

4.添加配置文件

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

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下的主类,

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

2.执行结果

  • 26
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值