DataX HDFS 导入 MySQL 的 JSON 配置详解
配置示例
以下是一个完整的 DataX 配置示例,用于将 HDFS 上的文本文件数据导入到 MySQL 数据库:
{
"job": {
"content": [
{
"reader": {
"name": "hdfsreader",
"parameter": {
"path": "/your/hdfs/path",
"defaultFS": "hdfs://namenode:port",
"column": [
{"index": 0, "type": "string"},
{"index": 1, "type": "long"},
{"index": 2, "type": "date"}
],
"fileType": "text",
"encoding": "UTF-8",
"fieldDelimiter": ","
}
},
"writer": {
"name": "mysqlwriter",
"parameter": {
"writeMode": "insert",
"username": "your_username",
"password": "your_password",
"column": [
"col1",
"col2",
"col3"
],
"connection": [
{
"jdbcUrl": "jdbc:mysql://mysql_host:port/your_database",
"table": ["your_table"]
}
]
}
}
}
],
"setting": {
"speed": {
"channel": 3
}
}
}
}
参数详解
HDFS Reader 配置
| 参数 | 说明 | 示例值 |
|---|---|---|
| name | 读取器名称 | hdfsreader |
| path | HDFS文件路径 | /data/user/*.csv |
| defaultFS | HDFS地址 | hdfs://namenode:8020 |
| column | 字段定义 | [{“index”:0,“type”:“string”}] |
| fileType | 文件类型 | text, orc, rc, seq |
| encoding | 文件编码 | UTF-8 |
| fieldDelimiter | 字段分隔符 | , |
MySQL Writer 配置
| 参数 | 说明 | 示例值 |
|---|---|---|
| name | 写入器名称 | mysqlwriter |
| username | 数据库用户名 | root |
| password | 数据库密码 | 123456 |
| column | 目标表字段 | [“id”,“name”,“age”] |
| jdbcUrl | JDBC连接地址 | jdbc:mysql://host:3306/db |
| table | 目标表名 | [“user_table”] |
| writeMode | 写入模式 | insert, replace, update |
完整配置模板
{
"job": {
"content": [
{
"reader": {
"name": "hdfsreader",
"parameter": {
"path": "/input/data_*.txt",
"defaultFS": "hdfs://192.168.1.100:8020",
"column": [
{"index": 0, "type": "long"},
{"index": 1, "type": "string"},
{"index": 2, "type": "string"},
{"index": 3, "type": "date", "format": "yyyy-MM-dd"}
],
"fileType": "text",
"encoding": "UTF-8",
"fieldDelimiter": "\t",
"nullFormat": "\\N",
"compress": "none"
}
},
"writer": {
"name": "mysqlwriter",
"parameter": {
"writeMode": "insert",
"username": "db_user",
"password": "db_password",
"column": ["id", "name", "email", "create_date"],
"connection": [
{
"jdbcUrl": "jdbc:mysql://192.168.1.200:3306/production_db?useUnicode=true&characterEncoding=utf8",
"table": ["user_info"]
}
],
"preSql": ["TRUNCATE TABLE user_info"],
"postSql": [],
"batchSize": 1024
}
}
}
],
"setting": {
"speed": {
"channel": 5,
"byte": 10485760
},
"errorLimit": {
"record": 100,
"percentage": 0.02
}
}
}
}
使用说明
-
保存配置文件:将上述配置保存为
hdfs2mysql.json -
运行DataX任务:
python datax.py hdfs2mysql.json -
常见问题处理:
- 确保HDFS路径存在且有读取权限
- 确认MySQL服务可访问且表结构匹配
- 检查字段类型映射是否正确
注意事项
- 字段类型需要正确映射(HDFS文本类型 → MySQL表字段类型)
- 对于大数据量导入,适当调整channel参数提高并发度
- 建议先在小数据量上测试验证配置正确性
如果需要处理其他文件格式(如ORC、Parquet)或有特殊需求,可以调整相应的reader参数。
注意点:

DataX实现HDFS到MySQL数据导入
1014

被折叠的 条评论
为什么被折叠?



