DataX 从HDFS文件系统上读取数据到FTP文件服务器 【举例介绍】

简介: DataX 从HDFS文件系统上读取数据到FTP文件服务器 【举例介绍】

官文档地址:github.com/alibaba/Dat… 


64.PNG65.PNG66.PNG


从hdfs上Reader  ---》  Writer 到FTP文件服务器


闲话不多说;直接演示;


{   "setting": {},

   "job": {

       "setting": {

           "speed": {

               "channel": 10

           }

       },

       "content": [

           {

               "reader": {

                   "name": "hdfsreader",

                   "parameter": {

                       "defaultFS": "hdfs://10.240.4.5:8000",

                  "path": "/wonders/123456",

                       "column": [

                            "*"

                       ],

                       "fileType": "text",

                       "encoding": "UTF-8",

                       "fieldDelimiter": ","

                   }

               },

              "writer": {

                   "name": "ftpwriter",

                   "parameter": {

                       "protocol": "ftp",

                       "host": "10.241.2.1",

                       "port": 21,

                       "username": "admin",

                       "password": "root",

                       "timeout": "60000",

                       "path": "/usr/local/ftp/ftpuser/uploadTest/",

                       "fileName": "test1",

                       "writeMode": "append",

                       "fieldDelimiter": ",",

                       "encoding": "UTF-8",

                       "nullFormat": "null",

                       "dateFormat": "yyyy-MM-dd",

                       "fileFormat": "text"

                   }

               }

           }

       ]

   }

}


重要参数说明(各个配置项值前后不允许有空格)

channel:参数该为若你读取是具体某个文件夹下的所有文件,channel为你指定默认顺序从头读取文件个数;


一、从HDFS文件系统 reader 数据【参数说明】

1、defaultFS【必选,默认值:无】:Hadoop hdfs文件系统namenode节点地址 ;【通常就是你hdfs安装ip地址加端口号;端口号是你安装时候给的端口号,而不是页面访问hdfs的端口号】


2、path 【必选,默认值:无】:要读取的文件路径 ;详情见DataX官文;【就是你想读取的在hdfs上存储的文件路径,比如我这里】、如下图;

67.jpg


3、column【必选,默认值:读取字段列表,type指定源数据的类型】:读取字段列表,type指定源数据的类型;index指定当前列来自于文本第几列(以0开始),value指定当前类型为常量,不从源头文件读取数据,而是根据value值自动生成对应的列。默认情况下,用户可以全部按照String类型读取数据,配置如下: "column": ["*"]    用户可以指定Column字段信息,配置如下:

"column": [
                               {
                                "index": 0,
                                "type": "long"
                               },
                               {
                                "index": 1,
                                "type": "boolean"
                               },
                               {
                                "type": "string",
                                "value": "hello"
                               },
                               {
                                "index": 2,
                                "type": "double"
                               }
                        ],


【通常是默认全部读取;"*"  】


4、fileType【必选,无默认值】 :描述:文件的类型,目前只支持用户配置为"text"、"orc"、"rc"、"seq"、"csv"

text表示textfile文件格式

orc表示orcfile文件格式

rc表示rcfile文件格式

seq表示sequence file文件格式

csv表示普通hdfs文件格式(逻辑二维表)

特别需要注意的是,HdfsReader能够自动识别文件是orcfile、textfile或者还是其它类型的文件,但该项是必填项,HdfsReader则会只读取用户配置的类型的文件,忽略路径下其他格式的文件

另外需要注意的是,由于textfile和orcfile是两种完全不同的文件格式,所以HdfsReader对这两种文件的解析方式也存在差异,这种差异导致hive支持的复杂复合类型(比如map,array,struct,union)在转换为DataX支持的String类型时,转换的结果格式略有差异,比如以map类型为例:

orcfile map类型经hdfsreader解析转换成datax支持的string类型后,结果为"{job=80, team=60, person=70}"

textfile map类型经hdfsreader解析转换成datax支持的string类型后,结果为"job:80,team:60,person:70"

从上面的转换结果可以看出,数据本身没有变化,但是表示的格式略有差异,所以如果用户配置的文件路径中要同步的字段在Hive中是复合类型的话,建议配置统一的文件格式。

如果需要统一复合类型解析出来的格式,我们建议用户在hive客户端将textfile格式的表导成orcfile格式的表

5、encoding 【不必选,默认值:utf-8】 :读取文件的编码配置;


6、fieldDelimiter 【不必选,默认值:,】 :读取的字段分隔符;

二、数据Writer到HDFS文件系统【参数说明】

1、protocol【必选,默认值:无】:ftp服务器协议,目前支持传输协议有ftp和sftp


2、host【必选,默认值:无】:ftp服务器地址


3、port【不必选,默认值:若传输协议是sftp协议,默认值是22;若传输协议是标准ftp协议,默认值是21】:ftp服务器端口


4、username【必选,默认值:无】:登录ftp服务器访问用户名


5、password【必选,默认值:无】:登录ftp服务器访问密码


6、path 【不必选,默认值:无】 :FTP文件系统的路径信息;为ftp存储文件的绝对地址


7、timeout 【不必选,默认值:60000(1分钟)】:连接ftp服务器连接超时时间,单位毫秒


8、fileName【必选,默认值:无】:FtpWriter写入的文件名,该文件名会添加随机的后缀作为每个线程写入实际文件


9、writeMode【必选,默认值:无 】:FtpWriter写入前数据清理处理模式;如下三种处理模式

  • truncate,写入前清理目录下一fileName前缀的所有文件。
  • append,写入前不做任何处理,DataX FtpWriter直接使用filename写入,并保证文件名不冲突。
  • nonConflict,如果目录下有fileName前缀的文件,直接报错。


10、fieldDelimiter【不必选,默认值:,】:读取的字段分隔符


11、encoding【不必选,默认值:无压缩】:文本压缩类型,暂时不支持


12、nullFormat【不必选,默认值:\N 】:文本文件中无法使用标准字符串定义null(空指针),DataX提供nullFormat定义哪些字符串可以表示为null。


13、dateFormat【不必选,默认值:无】:日期类型的数据序列化到文件中时的格式,例如 "dateFormat": "yyyy-MM-dd"


14、fileFormat【不必选,默认值:text】:文件写出的格式,包括csv  和text两种,csv是严格的csv格式,如果待写数据包括列分隔符,则会按照csv的转义语法转义,转义符号为双引号";text格式是用列分隔符简单分割待写数据,对于待写数据包括列分隔符情况下不做转义。


15、header 【不必选,默认值:无】:txt写出时的表头,示例['id', 'name', 'age'];

------------------------------------------------------------------------------------------------------------------------------------------

其他的reader writer 依照官文档,都是可以实现的;

以上是我由于本身需要,才去做了研究,若有存在不足的地方,请多多指出,一起进步;

附上我从ftp读取某个文件内容到本地txt;



{

   "setting": {},

   "job": {

       "setting": {

           "speed": {

               "channel": 2

           }

       },

       "content": [

           {

               "reader": {

                   "name": "ftpreader",

                   "parameter": {

                       "protocol": "ftp",

                       "host": "10.241.2.1",

                       "port": 21,

                       "username": "admin",

                       "password": "root",

                       "path": "/usr/local/ftp/ftpuser/uploadTest/test__98f280f0_57fa_4b08_9701_3b848ce7d204.txt"

                       "column": [

                          "*"

                       ],

                       "encoding": "UTF-8",

                       "fieldDelimiter": ","

                   }

               },

               "writer": {

                   "name": "txtfilewriter",

                   "parameter": {

                       "path": "C:/Users/luoyo/Desktop/工具夹/txt",

                       "fileName": "luohw",

                       "writeMode": "append",

                       "dateFormat": "yyyy-MM-dd"

                   }

               }

           }

       ]

   }

}

目录
相关文章
|
10月前
|
网络协议 关系型数据库 应用服务中间件
如何迁移网站数据到新的服务器
迁移网站数据到新服务器是一个系统化的过程,需谨慎操作以避免数据丢失或服务中断。小编为您整理发布如何迁移网站数据到新的服务器,以下是详细步骤和注意事项。
|
缓存 人工智能 架构师
释放数据潜力:利用 MCP 资源让大模型读懂你的服务器
MCP(Model Control Protocol)资源系统是将服务器数据暴露给客户端的核心机制,支持文本和二进制两种类型资源。资源通过唯一URI标识,客户端可通过资源列表或模板发现资源,并使用`resources/read`接口读取内容。MCP还支持资源实时更新通知及订阅机制,确保动态数据的及时性。实现时需遵循最佳实践,如清晰命名、设置MIME类型和缓存策略,同时注重安全性,包括访问控制、路径清理和速率限制等。提供的示例代码展示了如何用JavaScript和Python实现资源支持。
1184 80
|
9月前
|
机器学习/深度学习 SQL 大数据
什么是数据集成?和数据融合有什么区别?
在大数据领域,“数据集成”与“数据融合”常被混淆。数据集成关注数据的物理集中,解决“数据从哪来”的问题;数据融合则侧重逻辑协同,解决“数据怎么用”的问题。两者相辅相成,集成是基础,融合是价值提升的关键。理解其差异,有助于企业释放数据潜力,避免“数据堆积”或“盲目融合”的误区,实现数据从成本到生产力的转变。
什么是数据集成?和数据融合有什么区别?
|
9月前
|
存储 安全 数据管理
服务器违规资源被删,数据定时备份OSS 云存储才是 “救命稻草”
在数字化时代,数据已成为企业与个人的核心资产。然而,服务器违规、硬件故障等问题频发,导致数据丢失、业务中断,甚至造成不可挽回的损失。为保障数据安全与业务连续性,定时备份至关重要。阿里云国际站OSS提供高效、可靠的云存储解决方案,支持自动定时备份,帮助用户轻松应对数据风险。本文详解OSS备份操作步骤与注意事项,助你为数据穿上“防护甲”,实现安全无忧存储。
|
11月前
|
弹性计算 安全
阿里云服务器镜像,快速迁移项目数据
有时候旧服务器快到期了,想把项目、数据、软件挪到新服务器上,如果全部重新搭建的话,那无疑是耗时又费力。有了镜像迁移,就方便了许多。
754 1
|
存储 数据库 Python
使用HTTP POST协议将本地压缩数据发送到服务器
总的来说,使用HTTP POST协议将本地压缩数据发送到服务器是一个涉及多个步骤的过程,包括创建压缩文件,设置HTTP客户端,发送POST请求,以及服务器端的处理。虽然这个过程可能看起来复杂,但一旦你理解了每个步骤,就会变得相对简单。
410 19
|
关系型数据库 MySQL Linux
在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾
以上就是在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾的步骤。这个过程就像是一场接力赛,数据从MySQL数据库中接力棒一样传递到备份文件,再从备份文件传递到其他服务器,最后再传递回MySQL数据库。这样,即使在灾难发生时,我们也可以快速恢复数据,保证业务的正常运行。
541 28
|
12月前
|
弹性计算 NoSQL 数据库
阿里云服务器如何备份数据?
阿里云服务器数据备份有多种方法,用户可按需选择。主要方式包括:1)快照备份,创建云盘的时间点拷贝,支持定期备份与数据恢复;2)数据库备份DBS,适用于多种环境的数据库备份,涵盖本地及多云场景;3)云备份Cloud Backup,提供统一灾备平台,支持ECS整机、数据库、文件系统等全方位备份,保障数据安全。
|
安全 网络安全 定位技术
网络通讯技术:HTTP POST协议用于发送本地压缩数据到服务器的方案。
总的来说,无论你是一名网络开发者,还是普通的IT工作人员,理解并掌握POST方法的运用是非常有价值的。它就像一艘快速,稳定,安全的大船,始终为我们在网络海洋中的冒险提供了可靠的支持。
359 22
|
Ubuntu 安全 网络安全
在Ubuntu系统下使用vsftpd配置FTP服务器的步骤
以上就是在Ubuntu系统下使用vsftpd配置FTP服务器的步骤。这些步骤都是基础的,但足够让你建立一个简单的FTP服务器。如果你需要更高级的功能,例如SSL加密、虚拟用户等,你可能需要进一步研究vsftpd的配置选项。
775 13

热门文章

最新文章