在用Apache SeaTunnel研發SM2加密組件過程中,發現社區關於本地調試SeaTunnel文章過於簡單,很多情況沒有說明,於是根據自己遇到問題總結這篇文檔。SeaTunnel本地調試官方文檔,希望對大家有所幫助! 使用的引擎為Flink(不需要下載,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
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.執行結果
本文由 白鯨開源 提供發佈支持!