Skip to content

作业配置自动生成(addax gen)

addax gen 通过连接串自动生成可直接运行的作业配置文件(JSON),无需手动填写连接信息、表名和字段映射,把配置时间从分钟级降到秒级。

用法

bash
addax gen mysql://user:pass@host:3306/ods --table users \
          --to clickhouse://default@host:8123/ods --table users \
          [--columns a,b,c] [--channel 2] \
          [--password-env SRC_PASS] [--output job.json] [--no-probe]

也支持关系型数据库到 HDFS(高频场景):

bash
addax gen mysql://user:pass@host:3306/ods --table users \
          --to hdfs://namenode:8020/user/hive/warehouse/ods
参数缺省说明
<源连接串>(位置参数)必填源数据源连接串,见下方格式
--to <目标连接串>必填目标数据源连接串
--table <表>源/目标表名,各出现一次
--columns a,b,c探测全列指定列;不指定则自动探测全部列
--channel N1并发通道数;探测到主键时自动填入 splitPk 提升并发
--password-env VAR密码从环境变量读取,避免出现在命令行
--output <file>stdout输出到文件;已存在且未加 --overwrite 则报错
--overwrite允许覆盖已存在的输出文件
--no-probefalse跳过探测,仅拼接插件模板骨架(原行为)
-l列出所有 reader/writer 插件名

连接串格式

scheme://user:password@host:port/database
  • scheme 使用 JDBC URL 中的标准名称(mysqlpostgresqloracleclickhouse 等),大小写不敏感,不缩写
  • port 缺省时按 scheme 使用默认端口
  • database 为路径段;Oracle 下为 service name,SQLite/Access 下为文件路径
  • 密码含特殊字符时建议使用 --password-env 或交互输入
scheme默认端口生成的 JDBC URL
mysql3306jdbc:mysql://host:3306/db?useUnicode=true&characterEncoding=utf-8
postgresql5432jdbc:postgresql://host:5432/db
oracle1521jdbc:oracle:thin:@//host:1521/db
clickhouse8123jdbc:clickhouse://host:8123/db
sqlserver1433jdbc:sqlserver://host:1433;DatabaseName=db
db250000jdbc:db2://host:50000/db
sybase5000jdbc:sybase:Tds:host:5000/db
hana30015jdbc:sap://host:30015/?databaseName=db
sqlitejdbc:sqlite:db(db 为文件路径)
tdengine6030jdbc:TAOS-RS://host:6030/db
databend8000jdbc:databend://host:8000/db
hive10000jdbc:hive2://host:10000/db

生成行为

  1. 连接探测:连接源库,自动探测表结构(列名、类型、精度、主键)
  2. 列填充column 自动填充全部探测列(指定 --columns 时校验列存在性)
  3. 字段映射:目标表同名列自动匹配;目标缺失列或类型不匹配时列出警告,不静默
  4. splitPk:探测到主键且 --channel 大于 1 时自动填入
  5. 密码加密:生成的配置中密码以 ${enc:...} 密文形式输出(使用 encrypt_password.sh 相同的加密逻辑),不在配置中出现明文
  6. 写模式:默认 insert,v1 不支持 update 模式
  7. 输出:完整的 job JSON(setting.speed.channel + content.reader/writer),输出到 stdout 或文件(文件权限 600)

写入 HDFS

--to 使用 hdfs://host:port/path 形式(HA 场景可写 nameservice,如 hdfs://cluster/path),生成 hdfswriter 配置:

  • defaultFSpath 从连接串解析;fileName 缺省为源表名
  • column 按源表探测结果自动生成带类型的列清单,类型使用 Hive 规范类型名(tinyint/smallint/int/bigint 按位宽映射、varchar/text→string、bool→boolean、double 系→double、decimal/numeric→decimal、timestamp→timestamp、date→date;Hive 无 time 类型,映射为 string 并告警;未映射类型回退 string 并告警)
  • 模板示例中的 HA hadoopConfig、bloom filter、Kerberos 条目默认移除,按需用下列选项显式添加
选项缺省说明
`--file-type orcparquettext`
`--write-mode appendoverwritenonConflict`
`--compress NONEGZIPSNAPPY
--field-delimiter <char>模板默认文本文件分隔符
--encoding <charset>文本文件编码
--file-name <name>源表名输出文件名
`--have-kerberos truefalse`false
--kerberos-principal <p> / --kerberos-keytab <path>Kerberos 凭据(配合 --have-kerberos true
--hadoop-config k=v(可重复)额外 hadoop 配置(HA nameservices 等)
--hdfs-site-path <path>hdfs-site.xml 路径(替代手工 --hadoop-config,如 /etc/hadoop/conf/hdfs-site.xml

限制与降级

  • 仅支持两类场景:关系型数据库 ↔ 关系型数据库、关系型数据库 → HDFS。其他插件(txtfile、Excel、MongoDB 等)请使用原有的 gen -r/-w 模板拼接
  • v1 仅支持单表同步;多表、transformer、自定义 where 等复杂场景请手动编辑生成的配置
  • --no-probe 时与原有 addax.sh gen -r/-w 行为一致

错误处理

场景提示
网络连接失败区分主机不可达 / 端口拒绝,提示检查地址
认证失败提示检查用户名密码或 --password-env
源表不存在报错并列出名称相似的候选表
目标表不存在报错并列出候选表(v1 不自动建表)