当前位置: 首页 > article >正文

SeaTunnel系列之:Apache SeaTunnel编译和安装

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 作为数据源并将数据输出到控制台,可以将配置更改为如下内容。请注意,当使用除 FakeSourceConsole 之外的连接器时,需要修改 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-consoleconnector-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 引擎快速开始。

相关文章:

SeaTunnel系列之:Apache SeaTunnel编译和安装

Apache SeaTunnel编译 Prepare编译克隆源代码本地安装子项目从源代码构建 SeaTunnel构建子模块安装 JetBrains IDEA Scala 插件安装 JetBrains IDEA Lombok 插件代码风格运行简单示例不仅如此 安装下载 SeaTunnel 发布包下载连接器插件从源代码构建 SeaTunnel 运行 SeaTunnel 在…...

数据结构刷题之贪心算法

贪心算法&#xff08;Greedy Algorithm&#xff09; 是一种在每个步骤中都选择当前最优解的算法设计策略。它通常用于解决优化问题&#xff0c;例如最小化成本或最大化收益。贪心算法的核心思想是&#xff1a;在每一步选择中&#xff0c;都做出局部最优的选择&#xff0c;希望…...

Spring进阶:掌控Bean的作用域与生命周期

在上一篇文章中&#xff0c;我们了解了Spring IoC容器如何接管对象的创建和依赖注入&#xff0c;实现了松耦合。容器创建并管理的对象&#xff0c;我们称之为Bean。 但是&#xff0c;容器仅仅是创建Bean就够了吗&#xff1f;显然不是。我们还需要关心&#xff1a; 这个Bean在容…...

【Leetcode-Hot100】移动零

题目 解答 首先&#xff0c;使用的解题思路是&#xff1a;使用两个指针&#xff0c;分别指向数组的第一个0元素位置&#xff0c;以该元素位置1为起始点寻找接下来第一个非0元素位置。二者确定后&#xff0c;对其进行交换。随后继续寻找下一个0元素位置。重复上述操作。 但第一…...

安装 Calico 的两种主流方式对比

本文对比了 Calico 的两种主流安装方式&#xff1a; 使用 calico.yaml 的 Manifest 安装方式使用 Tigera Operator&#xff08;tigera-operator.yaml custom-resources.yaml&#xff09;安装方式 ✅ 1. 使用 Manifest 方式安装&#xff08;直接部署 calico.yaml&#xff09; …...

leetcode_203. 移除链表元素_java

203. 移除链表元素https://leetcode.cn/problems/remove-linked-list-elements/ 1、题目 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 示例 1&#xff1a; 输入&#xff1a;head …...

常见算法模板总结

文章目录 一、二叉树1. DFS2. BFS 二、回溯模板三、记忆化搜索四、动态规划1. 01背包朴素版本滚动数组优化 2. 完全背包朴素版本滚动数组优化 3. 最长递增子序列LIS朴素版本贪心二分优化 4. 最长公共子序列5. 最长回文子串 五、滑动窗口六、二分查找七、单调栈八、单调队列九、…...

UE5学习笔记 FPS游戏制作44 统一UI大小 sizeBox

如果我们希望多个类似的UI大小一样&#xff0c;例如不同菜单的标题&#xff0c;可以使用sizeBox组件 我们在标题控件上&#xff0c;用sizeBox包裹所有子物体 然后指定他的最小宽高&#xff0c;或最大宽高 如果指定的是最小宽高&#xff0c;当子元素&#xff08;如图片&#xf…...

# 基于BERT的文本分类

基于BERT的文本分类项目的实现 一、项目背景 该文本分类项目主要是情感分析&#xff0c;二分类问题&#xff0c;以下是大致流程及部分代码示例&#xff1a; 二、数据集介绍 2.1 数据集基本信息 数据集自定义类型二分类&#xff08;正面/负面&#xff09;样本量训练集 验证…...

C++学习之服务器EPOLL模型、处理客户端请求、向客户端回复数、向客户端发送文件

目录 1.启动epoll模型 2.和客户端建立新连接 3.接受客户端Http请求数据 4.代码回顾从接受的数据中读出请求行 5.请求行解析 6.正则表达式以及匹配 7.解析请求行以及后续处理 8.对path处理说明 9.如何回复响应数据 10.对文件对应content-type如何查询 11.服务器处理流…...

BUUCTF-web刷题篇(17)

26.BabyUpload 源码&#xff1a;https://github.com/imaginiso/GXY_CTF/tree/master/Web/babyupload 查看题目源码&#xff1a; 写着&#xff1a;SetHandler application/x-httpd-php 通过源码可以看出这道文件上传题目主要还是考察.htaccess配置文件的特性&#xff0c;倘若…...

国网B接口协议调阅实时视频接口流程详解以及检索失败原因(电网B接口)

文章目录 一、B接口协议调阅实时视频接口介绍B.6.1 接口描述B.6.2 接口流程B.6.3 接口参数B.6.3.1 SIP头字段B.6.3.2 SIP响应码B.6.3.3 SDP参数定义B.6.3.4 RTP动态Payload定义 B.6.4 消息示例B.6.4.1 调阅实时视频请求B.6.4.2 调阅实时视频请求响应 二、B接口调阅实时视频失败…...

windows11下pytorch(cpu)安装

先装anaconda 见最下方 Pytorch 官网&#xff1a;PyTorch 找到下图&#xff08;不要求版本一样&#xff09;&#xff08;我的电脑是集显&#xff08;有navdia的装gpu&#xff09;&#xff0c;装cpu&#xff09; 查看已有环境列表 创建环境 conda create –n 虚拟环境名字(…...

NVR接入录像回放平台用EasyCVR打造地下车库安防:大型商居安全优选方案

一、背景分析 随着居民生活品质的提升&#xff0c;大型商业建筑和住宅小区纷纷配套建设地下停车库。但是地下车库盗窃、失火、恶意毁坏车辆、外部人员随意进出等事件频发&#xff0c;部署视频监控系统成为保障地下车库的安全关键举措。 目前&#xff0c;很多商业和住宅都会在…...

玻璃期货数据下载与分析:Python金融实战分享

期货数据下载与分析&#xff1a;Python实战分享 引言 在金融市场中&#xff0c;期货分析是一项重要的工作&#xff0c;而获取准确且及时的数据是进行有效分析的基础。今天&#xff0c;我们将深入探讨一段使用Python编写的代码&#xff0c;该代码用于从郑州商品交易所&#xf…...

excel常见错误包括(#N/A、#VALUE!、#REF!、#DIV/0!、#NUM!、#NAME?、#NULL! )

目录 1. #N/A2. #VALUE!3. #REF!4. #DIV/0!5. #NUM!6. #NAME?7. #NULL!8.图表总结 在 Excel 中&#xff0c;可能会遇到以下常见的错误值&#xff0c;每个都有特定的含义和成因&#xff1a; 1. #N/A 含义&#xff1a; 表示“Not Available”&#xff08;不可用&#xff09;。…...

乾元通渠道商中标川藏铁路西藏救援队应急救援装备项目

乾元通渠道商中标川藏铁路西藏救援队应急救援装备项目&#xff0c;项目内通信指挥车基于最新一代应急指挥车解决方案打造&#xff0c;配合乾元通自研的车载多链路聚合路由及系统&#xff0c;主要用途为保障应急通讯&#xff0c;满足任务执行时指挥协调、通信联络及数据传输的要…...

数学知识——矩阵乘法

使用矩阵快速幂优化递推问题 对于一个递推问题&#xff0c;如递推式的每一项系数都为常数&#xff0c;我们可以使用矩阵快速幂来对算法进行优化。 一般形式为&#xff1a; F n F 1 A n − 1 F_nF_1A^{n-1} Fn​F1​An−1 由于递推式的每一项系数都为常数&#xff0c;因此对…...

左右开弓策略思路

一、策略概述 本策略是一种基于多种技术指标的复杂交易策略&#xff0c;包括自定义指标计算、过滤平滑处理以及交易信号生成。 该策略通过不同的交易平台代码段实现&#xff0c;旨在通过分析历史价格数据来预测未来价格走势&#xff0c;并据此生成交易信号。 二、主要技术指标…...

将jar包制作成deb一键安装包

文章目录 准备环境准备deb包结构构建Deb包测试安装常用操作命令 本文介绍如何将java运行环境、jar程序一起打包成一个deb格式的安装包&#xff0c;创建桌面图标&#xff0c;通过点击图标可使用系统自带浏览器快捷访问web服务的URL&#xff0c;同时注册服务并配置好开机自启。 准…...

Java 常用安全框架的 授权模型 对比分析,涵盖 RBAC、ABAC、ACL、基于权限/角色 等模型,结合框架实现方式、适用场景和优缺点进行详细说明

以下是 Java 常用安全框架的 授权模型 对比分析&#xff0c;涵盖 RBAC、ABAC、ACL、基于权限/角色 等模型&#xff0c;结合框架实现方式、适用场景和优缺点进行详细说明&#xff1a; 1. 授权模型类型与定义 模型名称定义特点RBAC&#xff08;基于角色的访问控制&#xff09;通…...

aws平台练习

注册 AWS 账户 访问 AWS 官方网站&#xff0c;点击“免费注册”按钮&#xff0c;按照提示完成账户注册&#xff1a; 提供电子邮件地址、密码和电话号码。 验证身份&#xff08;可能需要手机验证码&#xff09;。 设置 billing 信息。 2. 登录 AWS 管理控制台 使用注册的邮箱和…...

力扣DAY40-45 | 热100 | 二叉树:直径、层次遍历、有序数组->二叉搜索树、验证二叉搜索树、二叉搜索树中第K小的元素、右视图

前言 简单、中等 √ 好久没更了&#xff0c;感觉二叉树来回就那些。有点变懒要警醒&#xff0c;不能止步于笨方法&#xff01;&#xff01; 二叉树的直径 我的题解 遍历每个节点&#xff0c;左节点最大深度右节点最大深度当前节点当前节点为中心的直径。如果左节点深度更大…...

【MYSQL从入门到精通】数据类型及建表

一些基础操作语句 1.使用客户端工具连接数据库服务器&#xff1a;mysql -uroot -p 2.查看所有数据库&#xff1a;show databases; 3.创建属于自己的数据库&#xff1a; create database 数据库名;create database if not exists 数据库名; 强烈建议大家在建立数据库时指定编…...

【动态规划】 深入动态规划—两个数组的dp问题

文章目录 前言例题一、最长公共子序列二、不相交的线三、不同的子序列四、通配符匹配五、交错字符串六、两个字符串的最小ASCII删除和七、最长重复子数组 结语 前言 问题本质 它主要围绕着给定的两个数组展开&#xff0c;旨在通过对这两个数组元素间关系的分析&#xff0c;找出…...

结合大语言模型整理叙述并生成思维导图的思路

楔子 我比较喜欢长篇大论。这在代理律师界被视为一种禁忌。 我高中一年级的时候因为入学成绩好&#xff08;所在县榜眼名次&#xff09;&#xff0c;直接被所在班的班主任任命为班长。我其实不喜欢这个岗位。因为老师一来就要提前注意到&#xff0c;要及时喊“起立”、英语课…...

Kotlin学习

kotlin android 开源,Kotlin开源项目集合_晚安 呼-华为开发者空间 干货来袭&#xff0c;推荐几款开源的Kotlin的Android项目 https://zhuanlan.zhihu.com/p/536789267 【已解决】 ubuntu apt-get update连不上dl.google.com_为什么不能ping谷歌-CSDN博客...

若依前后端分离版本从mysql切换到postgresql数据库

一、修改依赖&#xff1a; 修改admin模块pom.xml中的依赖,屏蔽或删除mysql依赖&#xff0c;增加postgresql依赖。 <!-- Mysql驱动包 --> <!--<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId> &l…...

【力扣hot100题】(073)数组中的第K个最大元素

花了两天时间搞明白答案的快速排序和堆排序。 两种都写了一遍&#xff0c;感觉堆排序更简单很多。 两种都记录一下&#xff0c;包括具体方法和易错点。 快速排序 class Solution { public:vector<int> nums;int quicksort(int left,int right,int k){if(leftright) r…...

【AAOS】【源码分析】CarAudioService(二)-- 功能介绍

汽车音频是 Android 汽车操作系统 (AAOS) 的一项功能,允许车辆播放信息娱乐声音,例如媒体、导航和通信。AAOS 不负责具有严格可用性和时间要求的铃声和警告,因为这些声音通常由车辆的硬件处理。将汽车音频服务集成在汽车中,彻底改变了驾驶体验,为驾驶员和乘客提供了音乐、…...