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

Apache  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项目下的包

org.apache.seatunnel
connector-jdbc
${project.version}

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

mysql
mysql-connector-java
8.0.27

三、本地调试

1.debug运行

debug运行SeaTunnelApiExample.java下的主类,

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

2.执行结果

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

5分钟教你使用idea调试SeaTunnel自定义插件的更多相关文章

  1. 超详细手把手教你cordova开发使用指南+自定义插件,jsbridge

    Cordova是什么 使用前端技术 开发跨平台web App的工具 底层原理:HTML+CSS搭建页面, JS和原生交互 交互原理:Cordova插件 环境配置 安卓开发基础环境搭建的文章可以参考一下 ...

  2. Cordova应用的JavaScript代码和自定义插件代码的调试

    我之前写过三篇Cordova相关的技术文章.当我们使用Cordova将自己开发的前端应用打包安装到手机上后,可能会遇到需要调试Cordova应用的时候. 本文就介绍Cordova应用的调试步骤. 如果 ...

  3. 10分钟 教你学会Linux/Unix下的vi文本编辑器

    10分钟 教你学会Linux/Unix下的vi文本编辑器 vi编辑器是Unix/Linux系统管理员必须学会使用的编辑器.看了不少关于vi的资料,终于得到这个总结.不敢独享,和你们共享. 首先,记住v ...

  4. 3分钟教你做一个iphone手机浏览器

    3分钟教你做一个iphone手机浏览器 第一步:新建一个Single View工程: 第二步:新建好工程,关闭arc. 第三步:拖放一个Text Field 一个UIButton 和一个 UIWebV ...

  5. GC算法精解(五分钟教你终极算法---分代搜集算法)

    GC算法精解(五分钟教你终极算法---分代搜集算法) 引言 何为终极算法? 其实就是现在的JVM采用的算法,并非真正的终极.说不定若干年以后,还会有新的终极算法,而且几乎是一定会有,因为LZ相信高人们 ...

  6. 【python】10分钟教你用python打造贪吃蛇超详细教程

    10分钟教你用python打造贪吃蛇超详细教程 在家闲着没妹子约, 刚好最近又学了一下python,听说pygame挺好玩的.今天就在家研究一下, 弄了个贪吃蛇出来.希望大家喜欢. 先看程序效果: 0 ...

  7. 10分钟教你用Python打造天气机器人+关键字自动回复+定时发送

    01 前言 Hello,各位小伙伴.自上次我们介绍了Python实现天气预报的功能以后,那个小程序还有诸多不完善的地方,今天,我们再次来完善一下我们的小程序.比如我们想给机器人发“天气”等关键字,它就 ...

  8. 10分钟教你用Python打造微信天气预报机器人

    01 前言 最近武汉的天气越来越恶劣了.动不动就下雨,所以,拥有一款好的天气预报工具,对于我们大学生来说,还真是挺重要的了.好了,自己动手,丰衣足食,我们来用Python打造一个天气预报的微信机器人吧 ...

  9. 10分钟教你用Python玩转微信之好友性别比例统计分析

    01 前言+效果展示 想必,微信对于大家来说,是再熟悉不过的了.那么,大家想不想探索一下微信上的各种奥秘呢?今天,我们一起来简单分析一下微信上的好友性别比例吧~废话不多说,开始干活. 结果如下: 02 ...

  10. 10分钟教你用Python玩转微信之抓取好友个性签名制作词云

    01 前言+展示 各位小伙伴我又来啦.今天带大家玩点好玩的东西,用Python抓取我们的微信好友个性签名,然后制作词云.怎样,有趣吧~好了,下面开始干活.我知道你们还是想先看看效果的. 后台登录: 词 ...

随机推荐

  1. 父类和子类对象的获取值的方式验证,通过父类属性的方式获取不到值,需要使用get方法

    父类和子类对象的获取值的方式验证,通过父类属性的方式获取不到值,需要使用get方法 静态属性通过类.属性的方式获取,对象获取使用get方法获取 package com.example.core.myd ...

  2. spring eureka服务注册配置,排查服务注册上来了,但是请求没有过来。检查是否服务注册配置错误

    spring eureka服务注册配置,排查服务注册上来了,但是请求没有过来.检查是否服务注册配置错误 解决方法: 去掉该配置eureka.instance.hostname = client微服务的 ...

  3. 深入理解Android View(1)

    做android其实也有一段时间了,我们每个人都会碰到一些这样或那样的问题,碰到问题了就拼命百度,可是发现,我们解决问题的能力并没有提升很多,所以我才有想总结一下我项目中所用过的相关知识,并了解一下A ...

  4. LED虚拟拍摄-跟踪算法

    LED虚拟拍摄-跟踪算法 图引用拍摄黑科技,LED虚拟影棚揭秘 标定流程 上面是一台Track设备,现精度比较高的主要是Redspy,Mosys,一般影视用这二种,其底层技术参考SMAL单目+惯性传感 ...

  5. 韦东山freeRTOS系列教程之【第十章】软件定时器(software timer)

    目录 系列教程总目录 概述 10.1 软件定时器的特性 10.2 软件定时器的上下文 10.2.1 守护任务 10.2.2 守护任务的调度 10.2.3 回调函数 10.3 软件定时器的函数 10.3 ...

  6. 把nodejs程序打包成可执行文件

    在写好之后的nodejs程序,想发给同事的电脑上运行程序,就不得不下载node环境,还要安装第三方依赖包,非常的麻烦. 因此,可以借助一些插件来完成nodejs程序的打包,变成可以执行的文件. 将No ...

  7. 构筑开放式大数据架构,Apache Kyuubi和NDH荣登开源OSCAR

    [点击了解更多网易大数据技术] 在9月16日召开的"2022 OSCAR开源产业大会"上,中国信息通信研究院发布了一系列开源研究成果和开源表彰,网易数帆发起的开源项目Apache ...

  8. PHP str_replace() 函数详解

    PHP str_replace() 函数详解 1.前言: str_replace() 函数以其他字符替换字符串中的一些字符(区分大小写). 该函数区分大小写.请使用 str_ireplace() 函数 ...

  9. SQL_left join 和from 两个表的区别

    一个是普通的联接,结果中的记录在两个表中都有.一个是左外联接,结果中的记录在A表中存在,B表中不一定有.相当于a表为主体表,b为辅助表. 例子: mysql> select * from a;+ ...

  10. tp5生命周期

    https://www.kancloud.cn/manual/thinkphp5/118011 1.入口文件 用户发起的请求都会经过应用的入口文件,通常是 public/index.php文件.当然, ...