跳到主要内容
版本:Next

搭建开发环境

在这个章节, 我们会向你展示如何搭建 SeaTunnel 的开发环境, 然后用 JetBrains IntelliJ IDEA 跑一个简单的示例。

你可以用任何你喜欢的开发环境进行开发和测试,我们只是用 JetBrains IDEA 作为示例来展示如何一步步完成设置。

准备

在设置开发环境之前, 需要做一些准备工作, 确保你安装了以下软件:

  • 安装 Git
  • 安装 Java (目前只支持 JDK8/JDK11) 并且设置 JAVA_HOME 环境变量。
  • 安装 Scala (目前只支持 scala 2.11.12)。
  • 安装 JetBrains IDEA

设置

克隆源码

首先使用以下命令从 GitHub 克隆 SeaTunnel 源代码。

git clone git@github.com:apache/seatunnel.git

本地安装子项目

在克隆好源代码以后, 运行 ./mvnw 命令安装子项目到 maven 本地仓库目录。 否则你的代码无法在 IDEA 中正常启动。

./mvnw install -Dmaven.test.skip

源码编译

在安装 maven 以后, 可以使用下面命令进行编译和打包。

mvn clean package -pl seatunnel-dist -am -Dmaven.test.skip=true

编译子模块

如果要单独编译子模块, 可以使用下面的命令进行编译和打包。

# 这是一个单独构建 redis connector 的示例

mvn clean package -pl seatunnel-connectors-v2/connector-redis -am -DskipTests -T 1C

安装 JetBrains IDEA Scala 插件

用 JetBrains IntelliJ IDEA 打开你的源码,如果有 Scala 的代码,则需要安装 JetBrains IntelliJ IDEA's Scala plugin。 可以参考 install plugins for IDEA

安装 JetBrains IDEA Lombok 插件

在运行示例之前, 安装 JetBrains IntelliJ IDEA 的 Lombok plugin。 可以参考 install plugins for IDEA

代码风格

Apache SeaTunnel 使用 Spotless 来统一代码风格和格式检查。可以运行下面 Spotless 命令自动格式化。

./mvnw spotless:apply

拷贝 pre-commit hook 文件 /tools/spotless_check/pre-commit.sh 到你项目的 .git/hooks/ 目录, 这样每次你使用 git commit 提交代码的时候会自动调用 Spotless 修复格式问题。

运行一个简单的示例

完成上面所有的工作后,环境搭建已经完成, 可以直接运行我们的示例了。 所有的示例在 seatunnel-examples 模块里, 你可以随意选择进行编译和调试,参考 running or debugging it in 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
***********************************************

更多信息

所有的实例都用了简单的 source 和 sink, 这样可以使得运行更独立和更简单。 你可以修改 resources/examples 中的示例的配置。 例如下面的配置使用 PostgreSQL 作为源,并且输出到控制台。 请注意引用FakeSource 和 Console 以外的连接器时,需要修改seatunnel-example对应子模块下的pom.xml文件中的依赖。

env {
parallelism = 1
job.mode = "BATCH"
}
source {
Jdbc {
driver = org.postgresql.Driver
url = "jdbc:postgresql://host:port/database"
username = postgres
password = "123456"
query = "select * from test"
table_path = "database.test"
}
}

sink {
Console {}
}