Apache SeaTunnel編譯
- Prepare
- 編譯
- 克隆源代碼
- 本地安裝子項目
- 從源代碼構建 SeaTunnel
- 構建子模塊
- 安裝 JetBrains IDEA Scala 插件
- 安裝 JetBrains IDEA Lombok 插件
- 代碼風格
- 運行簡單示例
- 不僅如此
- 安裝
- 下載 SeaTunnel 發布包
- 下載連接器插件
- 從源代碼構建 SeaTunnel
- 運行 SeaTunnel
在本節中,我們將向您展示如何為 SeaTunnel 設置開發環境,然后在 JetBrains IntelliJ IDEA 中運行一個簡單的示例。
您可以在任何您喜歡的開發環境中開發或測試 SeaTunnel 代碼,但這里我們使用 JetBrains IDEA 作為示例,逐步教您。
Prepare
在我們開始討論如何設置環境之前,需要做一些準備工作。請確保你已經安裝了以下軟件:
- git已安裝。
- (目前支持JDK8/JDK11)已安裝,并且設置了JAVA_HOME。
- (目前僅支持scala 2.11.12)已安裝。
- IDEA已安裝。
編譯
克隆源代碼
首先,您需要從 GitHub 克隆 SeaTunnel 源代碼。
git clone git@github.com:apache/seatunnel.git
本地安裝子項目
克隆源代碼后,您應該運行 ./mvnw 命令將子項目安裝到 maven 本地存儲庫。否則,您的代碼無法在 JetBrains IntelliJ IDEA 中正確啟動。
./mvnw install -Dmaven.test.skip
從源代碼構建 SeaTunnel
安裝 maven 后,您可以使用以下命令進行編譯和打包。
mvn clean package -pl seatunnel-dist -am -Dmaven.test.skip=true
構建子模塊
如果要單獨構建子模塊,可以使用以下命令進行編譯和打包。
# This is an example of building the redis connector separatelymvn clean package -pl seatunnel-connectors-v2/connector-redis -am -DskipTests -T 1C
安裝 JetBrains IDEA Scala 插件
現在,你可以打開你的 JetBrains IntelliJ IDEA 并瀏覽源代碼。但在 IDEA 中構建 Scala 代碼之前,你還應該安裝 JetBrains IntelliJ IDEA 的 Scala 插件。
安裝 JetBrains IDEA Lombok 插件
在運行以下示例之前,您還應該安裝 JetBrains IntelliJ IDEA 的 Lombok 插件。
代碼風格
Apache SeaTunnel 使用 Spotless 進行代碼風格和格式檢查。你可以運行以下命令,Spotless 將自動修復代碼風格和格式錯誤:
./mvnw spotless:apply
你可以將預提交鉤子文件 /tools/spotless_check/pre-commit.sh 復制到你的 .git/hooks/ 目錄中,這樣每次你使用 git commit
提交代碼時,Spotless 都會自動為你修復問題。
運行簡單示例
完成上述所有步驟后,您就完成了環境設置,并可以運行我們提供的開箱即用的示例。所有示例都在 seatunnel-examples
模塊中,您可以選擇一個您感興趣的示例,并根據需要在 IDEA 中運行或調試。
這里我們以 seatunnel-examples/seatunnel-engine-examples/src/main/java/org/apache/seatunnel/example/engine/SeaTunnelEngineLocalExample.java
為例,當您成功運行它時,可以看到如下輸出:
2024-08-10 11:45:32,839 INFO org.apache.seatunnel.core.starter.seatunnel.command.ClientExecuteCommand -
***********************************************Job Statistic Information
***********************************************
Start Time : 2024-08-10 11:45:30
End Time : 2024-08-10 11:45:32
Total Time(s) : 2
Total Read Count : 5
Total Write Count : 5
Total Failed Count : 0
***********************************************
不僅如此
我們所有的示例都使用了簡單的數據源和接收器,以減少依賴并便于運行。您可以在 resources/examples
中更改示例配置。如果您希望使用 PostgreSQL 作為數據源并將數據輸出到控制臺,可以將配置更改為如下內容。請注意,當使用除 FakeSource
和 Console
之外的連接器時,需要修改 seatunnel-example
相應子模塊中的 pom.xml
文件中的依賴項。
env {parallelism = 1job.mode = "BATCH"
}
source {Jdbc {driver = org.postgresql.Driverurl = "jdbc:postgresql://host:port/database"username = postgrespassword = "123456"query = "select * from test"table_path = "database.test"}
}sink {Console {}
}
安裝
下載 SeaTunnel 發布包
下載二進制包
訪問 SeaTunnel 下載頁面 下載最新的二進制包 seatunnel-<?version?>-bin.tar.gz。
或者您也可以通過終端下載:
export version="2.3.11"
wget "https://archive.apache.org/dist/seatunnel/${version}/apache-seatunnel-${version}-bin.tar.gz"
tar -xzvf "apache-seatunnel-${version}-bin.tar.gz"
下載連接器插件
從版本 2.2.0-beta 開始,二進制包默認不再提供連接器依賴。因此,首次使用時,您需要運行以下命令來安裝連接器(或者,您可以手動從 Apache Maven 倉庫 下載連接器并將其移動到 connectors/ 目錄。對于 2.3.5 之前的版本,請將它們放置在 connectors/seatunnel 目錄中):
sh bin/install-plugin.sh
如果你需要特定的連接器版本,例如 2.3.11,你需要執行以下命令:
sh bin/install-plugin.sh 2.3.11
通常,你并不需要所有的連接器插件。你可以通過配置 config/plugin_config
來指定所需的插件。例如,如果你希望示例應用程序正常工作,你需要 connector-console
和 connector-fake
插件。你可以按以下方式修改 plugin_config
配置文件:
--seatunnel-connectors--
connector-fake
connector-console
--end--
你可以在 ${SEATUNNEL_HOME}/connectors/plugins-mapping.properties
文件中找到所有支持的連接器及其對應的 plugin_config
配置名稱。
提示:
如果你希望通過手動下載連接器來安裝連接器插件,只需下載相關的連接器插件并將其放置在 ${SEATUNNEL_HOME}/connectors/
目錄下。
從源代碼構建 SeaTunnel
下載源代碼
從源代碼構建。下載源代碼的方式與下載二進制包的方式相同。您可以從下載頁面下載源代碼,或者從Github 倉庫克隆源代碼。
構建源代碼
cd seatunnel
sh ./mvnw clean install -DskipTests -Dskip.spotless=true
# get the binary package
cp seatunnel-dist/target/apache-seatunnel-2.3.11-bin.tar.gz /The-Path-You-Want-To-Copycd /The-Path-You-Want-To-Copy
tar -xzvf "apache-seatunnel-${version}-bin.tar.gz"
當從源代碼構建時,所有連接器插件和一些必要的依賴項(例如:MySQL驅動程序)都包含在二進制包中。您可以直接使用這些連接器插件,而無需單獨安裝它們。
運行 SeaTunnel
現在您已經下載了 SeaTunnel 二進制包和連接器插件。接下來,您可以選擇不同的引擎選項來運行同步任務。
如果您使用 Flink 運行同步任務,則無需部署 SeaTunnel 引擎服務集群。您可以參考使用 Flink 快速開始來運行您的同步任務。
如果您使用 Spark 運行同步任務,則同樣無需部署 SeaTunnel 引擎服務集群。您可以參考使用 Spark 快速開始來運行您的同步任務。
如果您使用內置的 SeaTunnel 引擎(Zeta)來運行任務,則需要先部署 SeaTunnel 引擎服務。請參考使用 SeaTunnel 引擎快速開始。