首页 > 其他分享 >ChunJun FTP Connector 功能扩展解读

ChunJun FTP Connector 功能扩展解读

时间:2023-06-01 10:33:51浏览次数:54  
标签:FTP 自定义 文件 Connector ChunJun 分片

本文将从 FTP Connector 的功能详解,自定义文件切割自定义 FileFormat 三个方面为大家带来 ChunJun FTP Connector 的功能扩展分享。

FTP Connector 详解

FTP 是用于在网络上进行文件传输的一套标准协议,它工作在 OSI 模型的第七层, TCP 模型的第四层, 即应用层,提供一种在服务器和客户机之间上传和下载文件的有效方式。

FTP Connector 基本功能

ChunJun FTP Connector 基本功能如下:

· 支持 FTP 协议 与 SFTP 协议读写;

· 支持断点续传

· 支持并发读写;

· 支持多种文件格式的读写。

断点续传

主要的类:Position,Data,FtpFileReader,代码如下:

file
file

并发读写

代码如下:

file

自定义文件切割

ConcurrentFileSplitFactory 像一个工厂,通过这个工厂去创建其他的类,包括 ConcurrentZipCompressSplit、ConcurrentCsvSplit 以及默认的 DefaultFileSplit,类结构如下图:

file

处理流程

FTP 读取文件时,通过 ConcurrentFileSplit 对文件进行切割,切割成多个 FTPFileSplit,配置到 Channel 中,最后根据 FileSplit 保存的信息,自定义读取文件。

file

处理逻辑

· 使用 maxFetchSize 配置,当同步的文件大于这个值时,开启大文件切割功能

· 对文件进行分析,构建分片,以文件大小1.2G、分片数4举例,每个分片数处理的数据量约等于1.2G / 4 = 300M

其中使用的分片构建算法逻辑如下:

1)从第300M偏移量开始读文件,按单个字节遍历文件,记录下一个'\n'的文件偏移量,如300.1M,第一个分片处理文件的范围就是0~ 300.1M

2)第二个分片从 300.1M + 300M开始读文件,遍历文件,记录下一个'\n'的文件偏移量,如600.3M,第二个分片处理文件的范围就是300.1M~ 600.3M

3)以此类推, 构建完所有的分片

· 单个文件的数据在多个通道并发读取后,写入目标表时,无法对多个通道的数据按原文件中记录的顺序进行写入

单个并行度读取耗时为122s:

file

8个并行度读取平均耗时为88s:

file

自定义 FileFormat

自定义 FlieFormat 同样是以工厂模式实现的,ChunJun 目前已实现 Excel、Csv、Text 三种文件结构,当前仍然局限于 FTP,后续会扩展成公共模块,独属于 ChunJun 的 Format。类结构如下图:

file

ChunJun 设计方案

FTP 增加的功能点如下:

· FTP支持用户自定义解析方式;

· FTP 支持自定义数据转换。

针对上述新增功能点 ChunJun 设计方案如下:

· FTP soource 新增参数 customFormatClassName:自定义解析器类名

· 抽象出公共模块,定义解析器接口 IFileReadFormat ,解析方式由用户实现以及 ChunJun 自带的实现

大量具体代码请看视频教程⬇️:

视频课程&PPT获取

视频课程:

https://www.bilibili.com/video/BV1Gm4y1a7Fv/?spm_id_from=333.999.0.0

课件获取:

https://www.dtstack.com/resources/1044

《数栈产品白皮书》:https://www.dtstack.com/resources/1004?src=szsm

《数据治理行业实践白皮书》下载地址:https://www.dtstack.com/resources/1001?src=szsm

想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:https://www.dtstack.com/?src=szbky

同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术qun」,交流最新开源技术信息,qun号码:30537511,项目地址:https://github.com/DTStack

标签:FTP,自定义,文件,Connector,ChunJun,分片
From: https://www.cnblogs.com/DTinsight/p/17448235.html

相关文章

  • CentOS7配FTPS
    CentOS7配FTPS:yuminstallvsftpdvi/etc/vsftpd/vsftpd.confssl_enable=YESallow_anon_ssl=NO#force_local_data_ssl=YES#force_local_logins_ssl=YESrsa_cert_file=/etc/vsftpd/ssl/aa.crtrsa_private_key_file=/etc/vsftpd/ssl/aa.key#ssl_sslv2=YES#ssl_sslv3=YESp......
  • Linux - 配置file & ftp方式的yum源
      环境准备1、两台Centos服务器:node1、node22、配置ip:node1(192.168.56.111)、node2(192.168.56.112)3、关闭防火墙systemctlstopfirewalldsystemctldisablefirewalld4、禁用SELinux:setenforce0&&sed-i's/SELINUX=enforcing/SELINUX=disabled/g'/etc/selinux/c......
  • linux FTP文本传输
    目录一、文本传输协议二、连接方式三、程序安装四、黑名单和白名单五、实验1.实验一:匿名用户下载与上传2.实验二:关闭匿名用户登录,允许普通用户登录在家目录上传和下载3.实验三:禁止用户切换目录,只能在家目录操作4.实验四:黑名单限制test1登录   5.......
  • FTPClient API
    FTPClient是Java中一个常用的FTP客户端类库,提供了很多常用的FTP操作方法。下面是FTPClient中全部的方法详细说明:1.abort():终止当前正在进行的文件传输操作并丢弃所有未传输的数据。2.allocate(intbytes):为文件传输分配字节数组大小。3.appendFileStream(Stringremote)......
  • 【linux学习】mac启动ftp命令
    macOS默认关掉了FTP服务启动FTP服务终端命令:sudo-slaunchctlload-w/System/Library/LaunchDaemons/ftp.plist输入该命令之后,终端还会要求输入你的mac的密码。关闭FTP服务终端命令:sudo-slaunchctlunload-w/System/Library/LaunchDaemons/ftp.plist......
  • Linux-yum-ftp服务安装与配置
    1.为什么使用ftp安装ftp主要是还为了传输文件,但是我有一台服务器或者计算机,直接登录进去获取文件不行吗?为啥还要多此一举用ftp呢?原因是用ftp的话,它的会话是持久的,只有一次认证过程,传输多个文件都是使用同一个连接。因为ftp就是为远程文件交互而设计的,更适;而且有些时候只是为了......
  • python基础-进程池、submit同异步调用、shutdown参数、ProcessPoolExecutor进程池、进
    转载:(14条消息)python基础-进程池、submit同异步调用、shutdown参数、ProcessPoolExecutor进程池、进程池ftp_pythonsubmit_易辰_的博客-CSDN博客引入进程池在学习线程池之前,我们先看一个例子frommultiprocessingimportProcessimporttimedeftask(name):print(......
  • ftp&sftp&scp 安装使用!
    一、安装与激活1解压压缩包双击FileZilla安装程序,点击同意 2下一步(直接默认即可) 3下一步(直接默认即可) 4选择安装位置 5下一步(这一步默认即可)选择安装 二、使用1打开FileZilla 2建立站点,直接点击站点管理,或者点击文件后进入站点管理  3新建......
  • ftp-yum的使用
      , server端操作1.安装vsftpd服务(如无法安装,先配置本地yum源再进行安装)[root@server~]#rpm-qvsftpdvsftpd-3.0.2-28.el7.x86_642.创建镜像挂载目录并进行镜像挂载[root@server~]#yuminstall-yvsftpd[root@server~]#mkdir/var/ftp/dvd[root@server~]#......
  • samba服务及vsftp服务及nfs服务简单配置
    转至:https://blog.51cto.com/rylan/19456021.建立samba共享,共享目录为/data,要求:(描述完整的过程)1)共享名为shared,工作组为magedu;2)添加组develop,添加用户gentoo,centos和ubuntu,其中gentoo和centos以develop为附加组,ubuntu不属于develop组;密码均为用户名;3)添加sa......