文章目录

  • 概述
    • 介绍
    • 应用场景
    • 插件支持情况
  • 安装和配置
    • 安装
    • 配置
  • 使用
    • 案例1入门
    • 案例2传参

概述

介绍

SeaTunnel 是一个简单易用的数据集成框架,在企业中,由于开发时间或开发部门不通用,往往有多个异构的、运行在不同的软硬件平台上的信息系统同时运行。数据集成是把不同来源、格式、特点性质的数据在逻辑上或物理上有机地集中,从而为企业提供全面的数据共享。SeaTunnel 支持海量数据的实时同步。它每天可以稳定高效地同步数百亿数据,并已用于近 100 家公司的生产。
SeaTunnel的前身是 Waterdrop(中文名:水滴)自2021年 10月 12日更名为 SeaTunnel。2021年 12月 9日,SeaTunnel正式通过 Apache软件基金会的投票决议,以全票通过的优秀表现正式成为 Apache 孵化器项目。2022 年 3 月 18 日社区正式发布了首个 Apache 版本v2.1.0。
本质上,SeaTunnel 不是对 Saprk 和 Flink 的内部修改,而是在 Spark 和 Flink 的基础上做了一层包装。它主要运用了 控制反转的设计模式,这也是 SeaTunnel实现的基本思想。SeaTunnel 的日常使用,就是编辑配置文件。编辑好的配置文件由 SeaTunnel 转换为具体的 Spark或 Flink 任务,如图所示

应用场景


目前 SeaTunnel 的长板是他有丰富的连接器,又因为它以 Spark 和 Flink 为引擎。所以可以很好地进行分布式的海量数据同步。通常SeaTunnel会被用来做出仓入仓工具,或者被用来进行数据集成,下图是SeaTunnel的工作流程:

官网地址:https://seatunnel.apache.org/zh-CN/

插件支持情况

Spark连接器插件支持情况:

Flink连接器插件支持情况:

Spark-Flink转换插件支持情况:

安装和配置

安装

截至SeaTunnel2.1.0,支持的环境为Spark2.X、Flink1.9.0及以上,JDK>=1.8。
首先,下载解压SeaTunnel:

[root@scentos szc]# wget https://downloads.apache.org/incubator/seatunnel/2.1.0/apache-seatunnel-incubating-2.1.0-bin.tar.gz
[root@scentos szc]# tar -zxvf apache-seatunnel-incubating-2.1.0-bin.tar.gz

配置

进入apache-seatunnel-incubating-2.1.0/config/目录,编辑seatunnel.sh文件:

#!/usr/bin/env bash
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
## Home directory of spark distribution.
SPARK_HOME=${SPARK_HOME:-/opt/spark}
# Home directory of flink distribution.
FLINK_HOME=${FLINK_HOME:-/opt/flink}# Control whether to print the ascii logo
export SEATUNNEL_PRINT_ASCII_LOGO=true

默认的话,SPARK_HOME和FLINK_HOME用的都是对应的系统环境变量值,如果没有,使用:-后面的值,按需修改即可。

使用

案例1入门

创建作业配置文件example01.conf,内容如下:

# 配置 Spark 或 Flink 的参数
env {# You can set flink configuration hereexecution.parallelism = 1#execution.checkpoint.interval = 10000#execution.checkpoint.data-uri = "hdfs://scentos:9092/checkpoint"
}# 在 source 所属的块中配置数据源
source {SocketStream{host = scentosresult_table_name = "fake"field_name = "info"}
}# 在 transform 的块中声明转换插件
transform {Split{separator = "#" # 用#将输入分割成name和age两个字段fields = ["name","age"]}sql {sql = "select info, split(info) as info_row from fake" # 调用split()函数进行分割}
}# 在 sink 块中声明要输出到哪
sink {ConsoleSink {}
}

而后,先执行:

[root@scentos szc]# nc -lk 9999

再提交作业:

[root@scentos apache-seatunnel-incubating-2.1.0]# bin/start-seatunnel-flink.sh --config config/example01.conf

出现Job has been submitted with JobID XXXXXXX后,就可以在nc -lk终端里进行输入了:

[root@scentos szc]# nc -lk 9999
szc#23^H
szcc#26
dawqe
jioec*231#1

并且到Flink的webUI中查看输出:

至此,我们已经跑完了一个官方案例。它以 Socket为数据源。经过 SQL 的处理,最终输出到控制台。在这个过程中,我们并没有编写具体的flink代码,也没有手动去打jar包。我们只是将数据的处理流程声明在了一个配置文件中。在背后,是 SeaTunnel 帮我们把配置文件翻译为具体的 flink 任务。配置化,低代码,易维护是 SeaTunnel最显著的特点。

案例2传参

复制一份example01.conf:

[root@scentos config]# cp example01.conf example02.conf

修改SQL插件部分:

# 配置 Spark 或 Flink 的参数
env {# You can set flink configuration hereexecution.parallelism = 1#execution.checkpoint.interval = 10000#execution.checkpoint.data-uri = "hdfs://scentos:9092/checkpoint"
}# 在 source 所属的块中配置数据源
source {SocketStream{host = scentosresult_table_name = "fake"field_name = "info"}
}# 在 transform 的块中声明转换插件
transform {Split{separator = "#"fields = ["name","age"]}sql {sql = "select * from (select info, split(info) as info_row from fake) where age > '"${age}"'" # 嵌套一个子查询,再通过where进行过滤}
}# 在 sink 块中声明要输出到哪
sink {ConsoleSink {}
}

启动nc -lk后,通过-i对seaTunnel进行传参:

[root@scentos apache-seatunnel-incubating-2.1.0]# bin/start-seatunnel-flink.sh --config config/example02.conf -i age=25

多个参数要用多个-i进行传递,其中-i可以改成-p、-m等,只要不是–config或–variable即可。
测试输入如下:

[root@scentos szc]# nc -lk 9999
szc#26
szc002:#21
szc003#27

输出如下:

可见,21岁的szc002被过滤掉了。

数据集成框架SeaTunnel学习笔记相关推荐

  1. 轻量级HTTP客户端框架—Forest学习笔记

    轻量级HTTP客户端框架-Forest学习笔记 一.Forest 1.1 业务需求 一般情况下是后端提供接口,前端调用,解决需求,但是有的时候为了方便,复用别人的接口(网上的,公共的第三方接口(短信. ...

  2. 获取两个数据的交集_Redis学习笔记统计该如何选择数据类型

    关注爱因诗贤每天进步一点点导读 在业务场景中经常需要统计,如某直播累计观看人数.独立访客人数.历史总观看人数等等,再比如要统计某学生某月的签到情况等,遇到统计的情况,就需要思考如何合理地选择 Redi ...

  3. ssm 转发请求_千呼万唤!阿里内部终于把这份SSM框架技术学习笔记分享出来了...

    SSM SSM(Spring+SpringMVC+MyBatis)框架集由Spring.MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容).常作为数据源较简单的web项 ...

  4. php mvc 路由,PHP MVC框架路由学习笔记

    文章主要介绍了PHP MVC框架路由学习笔记的相关资料,需要的朋友可以参考下. 提到PHP开发web,自然离不开开发框架,开发框架为我们提供了灵活的开发方式,MVC层分离,业务解耦等... 第一篇先来 ...

  5. 在大量数据迁移期间oracle学习笔记

    在数据迁移期间oracle学习笔记 0主键(自增) 1用户代码 2区域代码 3承保公司代码 4理赔编码 5投保确认码 6案件状态 7案件进展 8重开案件进展 9转换后案件状态 需求分析: 1.根据上述 ...

  6. Apache Gobblin 分布式大数据集成框架

    Apache Gobblin 是一个分布式大数据集成框架,用于流式和批处理数据生态系统.该项目 2014 年起源于 LinkedIn,2015 年开源,并于 2017 年 2 月进入 Apache 孵 ...

  7. Flink CDC 新一代数据集成框架

    前言: 主要讲解了技术原理,入门与生产实践,主要功能:全增量一体化数据集成.实时数据入库入仓.最详细的教程.Flink CDC 是Apache Flink的一个重要组件,主要使用了CDC技术从各种数据 ...

  8. python segy格式地震数据读写包segyio学习笔记(二)

    python segy格式地震数据读写包segyio学习笔记(二) 最近大致搞明白了segyio读取叠后和叠前segy数据的方法,以及内部存储结构,以两段代码为例: 叠后数据读取.这是一个从给定时窗内 ...

  9. 用matlab代码进行数据探索、数据清洗学习笔记

    目录 1.说明 2.作文目的 3.数据质量分析3个判别方法 3-1.异常值判别 3-1-1.箱型图法 3-1-2.3σ准(原)则(拉依达准则) 3-2.缺失值判别 3-3.不一致的值判别 4.数据清洗 ...

最新文章

  1. 为什么企业光纤比家用光纤贵那么多,一般至少10倍以上?—Vecloud微云
  2. CentOS6.4之图解SSH无验证双向登陆配置
  3. 验证字符串是否为汉字
  4. wxWidgets:源代码概览
  5. 征战蓝桥 —— 2016年第七届 —— C/C++A组第7题——剪邮票
  6. 大数据集群搭建之hadoop、tomcat、jdk等工具的安装(三)
  7. java test circle_java-使用Jacoco和Circle CI生成测试覆盖率失败
  8. 记录使用IDEA部署Tomcat时提示错误:the selected directory is not a TomEE home
  9. HTML (3)---HTML编辑器
  10. 详细认识一下CSS盒子模型
  11. MATLAB编程思想
  12. 百度举办区块链论坛,携手多伙伴加速区块链产业落地
  13. Python学习:Mysql(二)
  14. C ++ 的 背 影    ——C++之父Bjarne Stroustrup印象 左轻侯 2002.11.4
  15. 标准时间标准Time Zone: GMT,UTC,DST,CST
  16. Cookie的过期时间设置
  17. 转 json数组对象和对象数组
  18. 思维导图有什么用?思维导图的优势、缺点及其适用人群详解 #CSDN博文精选# #知识图谱# #IT技术# #思维导图#
  19. IT计算机实习:JAVA实习报告范文(三)
  20. Exadata一体机故障回顾

热门文章

  1. npm的卸载与安装流程
  2. 四川省java版数据结构试卷_2014四川省JAVA版数据结构试题及答案
  3. 清风 mysql_MySQL数据库 - 清风_的个人页面 - OSCHINA - 中文开源技术交流社区
  4. 【审批工作流camunda教程】(二):camunda数据库中的48张表分别的大致含义,数据库表结构介绍
  5. 【MCAL_CANDriver】-4.2-Classical CAN升级至CANFD如何配置Bit Rate比特率/波特率
  6. 关于码率bitrate,帧率frame rate,分辨率的区别
  7. gradle第三方Jar包依赖统一管理
  8. 服务器creo怎么添加配置文件,Creo 2.0 配置文件选项以及实例
  9. python_练习(小李飞刀大战伏地魔)
  10. Modbus 整型转单精度浮点