DataX 的配置文件是 JSON 格式,主要由 job
和 setting
两部分组成:
- job:定义数据同步任务的 reader 和 writer。
- setting:定义任务的运行参数,例如速度控制、错误处理等。
示例:从 MySQL 导入到 HDFS
下面是一个示例配置文件,展示如何从 MySQL 数据库读取数据并导入到 HDFS。
{
"job": {
"setting": {
"speed": {
"channel": 3
},
"errorLimit": {
"record": 0,
"percentage": 0.02
}
},
"content": [
{
"reader": {
"name": "mysqlreader",
"parameter": {
"username": "your_username",
"password": "your_password",
"column": [
"id",
"name",
"age",
"address"
],
"splitPk": "id",
"connection": [
{
"table": [
"your_table"
],
"jdbcUrl": [
"jdbc:mysql://your_mysql_host:3306/your_database"
]
}
]
}
},
"writer": {
"name": "hdfswriter",
"parameter": {
"defaultFS": "hdfs://your_hdfs_cluster",
"fileType": "text",
"path": "/user/hive/warehouse/your_table",
"fileName": "datax_output",
"column": [
{
"name": "id",
"type": "bigint"
},
{
"name": "name",
"type": "string"
},
{
"name": "age",
"type": "int"
},
{
"name": "address",
"type": "string"
}
],
"writeMode": "append",
"fieldDelimiter": "\t",
"fileFormat": "text",
"compress": "gzip"
}
}
}
]
}
}
名词解释:
1.channel
:在 DataX 中,channel
是用于控制并发度的一个重要参数。它的作用是定义 DataX 在数据同步任务中同时执行的线程数量。具体来说,channel
数量决定了 DataX 可以并行处理的数据流数量,从而直接影响数据同步任务的执行速度和性能。
2.splitPk
:在 DataX 中,splitPk
参数通常用于配置主键或其他唯一标识字段,以便在数据同步过程中对数据进行分片(split)。在进行数据同步时,通过 splitPk
将数据按主键范围分片,每个分片的数据可以由不同的并发任务(channel)处理,从而实现并行处理。
配置说明
1. job.setting
- speed.channel:并发执行的任务数。
- errorLimit:错误处理限制,包括错误记录数和错误百分比。
2. job.content
-
reader:定义数据源,这里使用
mysqlreader
读取 MySQL 数据库。- username:数据库用户名。
- password:数据库密码。
- column:需要同步的列名列表。
- splitPk:用于数据分片的主键。
- connection:数据库连接信息。
- table:需要同步的表名。
- jdbcUrl:数据库连接URL。
-
writer:定义数据目标,这里使用
hdfswriter
写入 HDFS。- defaultFS:HDFS 文件系统地址。
- fileType:文件类型,这里为
text
。 - path:目标路径。
- fileName:文件名前缀。
- column:列名和类型映射。
- writeMode:写入模式,这里为
append
。 - fieldDelimiter:字段分隔符,这里使用制表符。
- fileFormat:文件格式,这里为
text
。 - compress:压缩方式,这里为
gzip
。