5分鐘教你使用idea調試SeaTunnel自定義插件

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

本文由 白鯨開源科技 提供發佈支持!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章