一. DataX的安装
1.环境准备
操作系统为CentOS 7.2及以上版本或RedHat 7.2及以上版本,暂不支持SUSE操作系统。python为2.x版本,java为1.8版本。
新建操作系统用户admin。安装DataX使用root用户安装。
2.安装
用root用户执行:
rpm -ivh t_dp_dw_datax_3_core_all-20191202-external.noarch.rpm
3.DataX的执行
3.1命令格式:
python /home/admin/datax3/bin/datax.py /xxx/x.json
3.2参数说明:
-
DataX的可执行文件datax.py位于目录/home/admin/datax3/bin下,执行的配置文件为json格式,配置文件模板在/home/admin/datax3/job目录下
3.3配置文件组成
配置文件由全局配置、reader模块和writer模块组成。全局配置对同步整个过程进行管控;reader为数据采集模块,负责从源端读取数据;writer为数据写入模块,将数据写入到目的端。reader模块和writer模块由不同的插件提供对不同数据源和目标的支持。
全局配置样例:
"job": {
"setting": {
"speed": {
"channel": 3,
"byte": 1048576
},
"errorLimit": {
"record": 0,
"percentage": 0.02
}
}
speed为同步速度限制参数,这里有三个参数channel、record和byte。
channel:管道数,即并行数,需与splitPk一同使用,否则无效果。
record:每次同步多少条数据,取record和byte中的最小值
byte:每次同步多少字节数据,取record和byte中的最小值
errorLimit为错误数据限制,这里有两个参数record和percentage,指当异常数据达到多少时同步取消,取record和percentage的最小值
4. TxtFileReader
TxtFileReader提供了读取本地文件系统数据存储的能力,在底层实现上,TxtFileReader获取本地文件数据,并转换为DataX传输协议传递给writer。支持csv格式的文件,可自定义分隔符,多个File可以支持并发读取
- 配置样例如下:
"reader": {
"name": "txtfilereader",
"parameter": {
"path": ["/home/test/data/test.csv"],
"encoding": "UTF-8",
"column": [
{
"index": 0,
"type": "long"
},
{
"index": 1,
"type": "boolean"
},
{
"index": 2,
"type": "double"
},
{
"index": 3,
"type": "string"
},
{
"index": 4,
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss"
},
{
"type": string,
"value": "alibaba",
}
],
"fieldDelimiter": "|",
"nullFormat":""
}
}
参数说明:
path
必选字段。
本地文件系统的路径信息,可填写多个路径。当指定通配符,TxtFileReader尝试遍历多个文件信息。例如: 指定/data/*代表读取data目录下所有的文件。
column
必选字段。
读取字段列表,type指定源数据的类型;index指定当前列来自于文本第几列(以0开始);value指定当前类型为常量,不从源头文件读取数据,而是根据value值自动生成对应的列。
fieldDelimiter
必选字段。
读取的字段分隔符,默认为","。
encoding
非必选字段。
读取文件的编码配置,默认值为utf-8。
skipHeader
非必选字段。
类CSV格式文件可能存在表头为标题情况,需要跳过,默认值为false。
nullFormat
非必选字段。
文本文件中无法使用标准字符串定义null(空指针),DataX提供nullFormat定义哪些字符串可以表示为null。例如如果用户配置nullFormat:"\N",那么如果源头数据是"\N",DataX视作null字段。
csvReaderConfig
非必选字段。
读取CSV类型文件使用的CsvReader进行读取,会有很多配置,不配置则使用默认值。
常见配置:
"csvReaderConfig":{
"safetySwitch": false,
"skipEmptyRecords": false,
"useTextQualifier": false
}
配置时 csvReaderConfig 中请严格按照以下字段名字进行配置:
boolean caseSensitive = true;
char textQualifier = 34;
boolean trimWhitespace = true;
boolean useTextQualifier = true;//是否使用csv转义字符
char delimiter = 44;//分隔符
char recordDelimiter = 0;
char comment = 35;
boolean useComments = false;
int escapeMode = 1;
boolean safetySwitch = true;//单列长度是否限制100000字符
boolean skipEmptyRecords = true;//是否跳过空行
boolean captureRawRecord = true;
类型转换
本地文件本身不提供数据类型,DataX TxtFileReader定义字段为long、double、string、boolean、date。
long指本地文件文本中使用整形的字符串表示形式,例如"19901219"。
double是指本地文件文本中使用double的字符串表示形式,例如