【共建开源】手把手教你贡献一个 SeaTunnel PR,超级详细教程!

这篇具有很好参考价值的文章主要介绍了【共建开源】手把手教你贡献一个 SeaTunnel PR,超级详细教程!。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【共建开源】手把手教你贡献一个 SeaTunnel PR,超级详细教程!

Apache SeaTunnel是一个非常易于使用的、超高性能的分布式数据集成平台,支持海量数据的实时同步。每天可稳定高效同步数百亿数据,已被近百家企业投入生产使用。

现在的版本不支持通过jtds的方式链接sqlserver,我们来自己写代码来实现它,并把代码提交给apache seatunnel。

1. 下载源代码

1.首先从远端仓库 https://github.com/apache/seatunnel fork一份代码到自己的仓库中

【共建开源】手把手教你贡献一个 SeaTunnel PR,超级详细教程!
【共建开源】手把手教你贡献一个 SeaTunnel PR,超级详细教程!

2.远端仓库中目前有超过30个分支:

  • dev :日常开发分支

  • 其他分支 :发布版本分支

【共建开源】手把手教你贡献一个 SeaTunnel PR,超级详细教程!

3.把自己仓库clone到本地

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

【共建开源】手把手教你贡献一个 SeaTunnel PR,超级详细教程!

  1. 添加远端仓库地址,命名为upstream

这一步是为了让本地代码知道他的上游是apache/seatunnel

git remote add upstream git@github.com:apache/seatunnel.git

【共建开源】手把手教你贡献一个 SeaTunnel PR,超级详细教程!

5.查看仓库:

git remote -v

【共建开源】手把手教你贡献一个 SeaTunnel PR,超级详细教程!

此时会有两个仓库:origin(自己的仓库)和upstream(远端仓库)

6.获取/更新远端仓库代码(已经是最新代码,就跳过)

git fetch upstream

【共建开源】手把手教你贡献一个 SeaTunnel PR,超级详细教程!

2. 编写代码

1.加载拉取到本地的代码到IDEA中

【共建开源】手把手教你贡献一个 SeaTunnel PR,超级详细教程!

这里我们需要注意两个module:seatunnel-connectors-v2和seatunnel-examples,其中seatunnel-connectors-v2是我们来写代码的module,seatunnel-examples是我们用来测试代码的module。

2.编写代码

目前代码中已经实现了基于JDBC的方式取链接SqlServer。我们只需要在它的基础之上去做一定的修改即可,经过debug来阅读源码,并了解了需要改的地方如下图:

【共建开源】手把手教你贡献一个 SeaTunnel PR,超级详细教程!

代码实现如下:

SqlServerDialectFactory.java

return (url.startsWith("jdbc:jtds:sqlserver:") || url.startsWith("jdbc:sqlserver:"));

SqlserverTypeMapper.java

private static final String SQLSERVER_SYSNAME = "SYSNAME";
case SQLSERVER_SYSNAME:
                return BasicType.STRING_TYPE;

SimpleJdbcConnectionProvider.java

public boolean isConnectionValid() throws SQLException {
        if (connection != null && connection.toString().startsWith("net.sourceforge.jtds")){
            return connection != null
                    && !connection.isClosed();
        }else {
            return connection != null
                    && connection.isValid(jdbcConfig.getConnectionCheckTimeoutSeconds());
        }
    }

pom.xml

<jtds.version>1.3.1</jtds.version>
<dependency>
                <groupId>net.sourceforge.jtds</groupId>
                <artifactId>jtds</artifactId>
                <version>${jtds.version}</version>
                <scope>provided</scope>
            </dependency>
<dependency>
            <groupId>net.sourceforge.jtds</groupId>
            <artifactId>jtds</artifactId>
            <version>${jtds.version}</version>
        </dependency>

3. 测试代码

1.编写config文件,我们测试通过net.sourceforge.jtds.jdbc.Driver 从sqlserver中读出数据再写入sqlserver中

env {
  # You can set flink configuration here
  execution.parallelism = 1
  job.mode = "BATCH"
  #execution.checkpoint.interval = 10000
  #execution.checkpoint.data-uri = "hdfs://localhost:9000/checkpoint"
}

source {
  # This is a example source plugin **only for test and demonstrate the feature source plugin**
  Jdbc {
    driver = net.sourceforge.jtds.jdbc.Driver
    url = "jdbc:jtds:sqlserver://localhost:1433/dbname"
    user = SA
    password = "A_Str0ng_Required_Password"
    query = "select age, name from source"
  }

  # If you would like to get more information about how to configure seatunnel and see full list of source plugins,
  # please go to https://seatunnel.apache.org/docs/connector-v2/source/Jdbc
}

transform {

  # If you would like to get more information about how to configure seatunnel and see full list of transform plugins,
  # please go to https://seatunnel.apache.org/docs/transform-v2/sql
}

sink {
  Jdbc {
    driver = net.sourceforge.jtds.jdbc.Driver
    url = "jdbc:jtds:sqlserver://localhost:1433/dbname"
    user = SA
    password = "A_Str0ng_Required_Password"
    query = "insert into sink(age, name) values(?,?)"
  }

  # If you would like to get more information about how to configure seatunnel and see full list of sink plugins,
  # please go to https://seatunnel.apache.org/docs/connector-v2/sink/Jdbc
}

【共建开源】手把手教你贡献一个 SeaTunnel PR,超级详细教程!

2.修改seatunnel-flink-connector-v2-example中的SeaTunnelApiExample,写入我们写好的config文件

【共建开源】手把手教你贡献一个 SeaTunnel PR,超级详细教程!

添加seatunnel-flink-connector-v2-example pom文件中添加jdbc依赖

【共建开源】手把手教你贡献一个 SeaTunnel PR,超级详细教程!

3.运行代码

运行SeaTunnelApiExample,右键->run

4. 提交issue

issue的作用就是告诉社区我们打算做什么事情,后续的PR就是来提交代码解决这个issue。除此以外issue也是我们来提出bug或者其他想法的地方。不一定自己来实现它。你提出来,别人能解决,他们就会提交PR来解决这个问题。

【共建开源】手把手教你贡献一个 SeaTunnel PR,超级详细教程!
【共建开源】手把手教你贡献一个 SeaTunnel PR,超级详细教程!
【共建开源】手把手教你贡献一个 SeaTunnel PR,超级详细教程!

我这里提交了一个叫[Feature][Connector-V2][SqlServer] Support driver jtds for SqlServer #5307 的issue,其中Feature可以按具体的内容换成BUG/DOCS等等 Connector-V2可以换成其他的具体模块,这里大家可以参照别人已经提的issue来命名。

注:带"*"的都是必填项

5. 提交代码

git commit -m 'commit content'
git push

提交后在github上查看提交代码详情

【共建开源】手把手教你贡献一个 SeaTunnel PR,超级详细教程!

6. 提交PR(Pull Request)

提交完成后,因为我们的仓库的代码的上游是apache/seatunnel,在conribute中我们就可以去提交一个PR。

【共建开源】手把手教你贡献一个 SeaTunnel PR,超级详细教程!

点击Open pull request,就会跳转到上游apache/seatunnel下面的Pull Request列表,并自动开发创建PR页面。填写相关内容,PR的名称就跟需要解决的这个issue一样就可以了,需要注意的时候,最后要带上issue的ID ,我这里是#5307 ,之后点击提交就可以了。

【共建开源】手把手教你贡献一个 SeaTunnel PR,超级详细教程!
【共建开源】手把手教你贡献一个 SeaTunnel PR,超级详细教程!

之后就等社区的管理员审核就可以了,这个过程中可能会在PR中进行留言交流,必要的话,再修改代码,重新提交代码,openPR...

本文由 白鲸开源 提供发布支持!文章来源地址https://www.toymoban.com/news/detail-707998.html

到了这里,关于【共建开源】手把手教你贡献一个 SeaTunnel PR,超级详细教程!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 手把手教你用MindSpore训练一个AI模型!

    首先我们要先了解深度学习的概念和AI计算框架的角色( https://zhuanlan.zhihu.com/p/463019160 ),本篇文章将演示怎么利用MindSpore来训练一个AI模型。和上一章的场景一致,我们要训练的模型是用来对手写数字图片进行分类的LeNet5模型 请参考( http://yann.lecun.com/exdb/lenet/ )。 图1 M

    2024年02月04日
    浏览(60)
  • 【手把手教你制作一个简易版的shell】

    为了简便,命令行中的提示符我们可以直接用printf打印,而具体执行命令可以交给子进程去做,现在的关键是如何将获得的命令行中的命令切割。我们在学习C语言时提到了strtok函数,正好这个函数可以用来作为切割。 基本框架: 不知道大家注意到了没有,我们从键盘中读取

    2023年04月16日
    浏览(52)
  • 手把手教你开发第一个HarmonyOS (鸿蒙)移动应用

    移动应⽤开发: Android IOS HarmonyOS (鸿蒙) 文档概览-HarmonyOS应用开发官网 2.1 系统的定义 2.1.1 系统的定位 HarmonyOS有三⼤特征: 搭载该操作系统的设备在系统层⾯融为⼀体、形成超级终端,让设备的硬件能⼒可以弹性 扩展,实现设备之间 硬件互助,资源共享。 对消费者⽽⾔,

    2024年02月02日
    浏览(81)
  • 手把手教你写出第一个C语言程序

    大家好,我是努力学习游泳的鱼。这篇文章将手把手带你写出人生中第一个C语言程序, Hello, World 。在阅读本文之前,建议先百度 visual studio ,在微软官网下载并安装VS的最新版本,安装时记得勾选“C++桌面开发”选项。 2.1 环境 工欲善其事必先利其器,我们需要写C语言代码

    2024年02月10日
    浏览(57)
  • 手把手教你新建一个winform项目(史上最全)

    最近有粉丝订阅了我的博客专栏《winform控件从入门到精通》,但是却来问我平时使用什么软件来开发winform程序,我本以为订阅我专栏的粉丝至少应该是掌握Microsoft Visual Studio的基本用法,也能够创建winform项目,看来是我大意了,我的错,粉丝们!对于不会创建winform项目但是

    2024年02月04日
    浏览(61)
  • 手把手教你在ARM板上写一个驱动程序!

    摘要:搞嵌入式有两个方向,一个是嵌入式软件开发(MCU方向),另一个是嵌入式软件开发(Linux方向)。其中MCU方向基本是裸机开发和RTOS开发。而Linux开发方向又分为驱动开发和应用开发。其中应用开发相比于驱动开发来说简单一些,因为搞驱动你要和Linux内核打交道。而我们普

    2024年02月01日
    浏览(87)
  • 用Python手把手教你实现一个爬虫(含前端界面)

    前言 爬虫基本原理 使用Python的requests库发送HTTP请求 使用BeautifulSoup库解析HTML页面 使用PyQt5构建前端界面 实现一个完整的爬虫程序 结语 随着互联网的飞速发展,再加上科技圈的技术翻天覆地的革新,互联网上每天都会产生海量的数据,这些数据对于企业和个人都具有重要的

    2024年04月28日
    浏览(49)
  • 小白指南:手把手教你用低代码开发一个应用页面

    原文链接: 小白指南:手把手教你用低代码开发一个应用页面,点击链接查看更多技术内容; 一、什么是低代码开发 在了解低代码开发之前,我们先看看使用低代码开发的效果。 低代码开发效果示例 低代码开发是DevEco Studio为HarmonyOS开发者提供的可视化页面的开发方式,具

    2024年02月09日
    浏览(54)
  • 开源!手把手教你搭建Arduino+英伟达Jetson的ROS小车(下)

    想起去年元旦收到群里面小伙伴儿的建议,希望我们也能够出一个基于NVIDIA Jetson nano 的ROS小车搭建过程,于是我们就慢慢书写了前面已经发布的推文集:     《开源!手把手教你搭建Arduino+英伟达Jetson的ROS小车(上)》中,我们介绍了一台Jetson nano小车所需要的硬件部分;

    2024年02月07日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包