Skip to content

import and export

caojingwei edited this page Aug 19, 2017 · 9 revisions

本文档主要说明任务结点中,导入导出任务的相关协议。

1 MySQL/POSTGRES 导入到 HIVE

说明:从 mysql/postgres 导入到 hive 表中。

参数 类型 是否必选 描述 说明
type string 导入导出的类型 必须是 "MYSQL_TO_HIVE" 或 "POSTGRES_TO_HIVE"
reader jsonObject 读规则参数
writer jsonObject 写规则参数
setting jsonObject 其他导入规则

reader 中每个元素说明如下:

参数 类型 是否必选 描述 说明
datasource string 数据源名称
table array 需要导入的表列表,可以是多张表,但是必须相同的schema结构,支持动态规则 test_$[yyyyMMdd],关于自定义参数相关内容,详见:[[参数说明 parameter desc]]
splitPk string 根据指定字段进行数据分片 目前只支持整形的分片,建议使用主键
where string 筛选条件 不需要要写where,不支持limit等,只支持合法的where语句
querySql string 查询语句 如果需要做复杂查询,这里可以指定查询语句
column array 需要读取的字段 用户需要按照Mysql SQL语法格式: ["id", "table", "1", "'bazhen.csy'", "null", "to_char(a + 1)", "2.3" , "true"] id为普通列名,table为包含保留在的列名,1为整形数字常量,'bazhen.csy'为字符串常量,null为空指针,to_char(a + 1)为表达式,2.3为浮点数,true为布尔值。

writer 中每个元素说明如下: 注意:当前导入不支持hive中的高级类型。

参数 类型 是否必选 描述 说明
database string 需要导入的数据库名
table string 需要导入的表名,支持动态规则 test_$[yyyyMMdd],关于自定义参数相关内容,详见:[[参数说明 parameter desc]]
writeMode enum 写入模式 支持 append 追加,和overwrite 覆盖
column jsonArray 需要写入的字段 与reader的中的字段按照数组顺序一一对应

writer.column 中每个字段说明如下:

参数 类型 是否必选 描述 说明
name string 字段名称
type enum 字段类型 目前仅支持与以下 Hive 数据类型: 数值型:TINYINT,SMALLINT,INT,BIGINT,FLOAT,DOUBLE 字符串类型:STRING,VARCHAR,CHAR 布尔类型:BOOLEAN 时间类型:DATE,TIMESTAMP,目前不支持:decimal、binary、arrays、maps、structs、union 类型

mysql 类型到 hive 类型的转换支持列表

mysql 类型 支持的 hive 类型 说明
int, tinyint, smallint, mediumint, int, bigint TINYINT,SMALLINT,INT,BIGINT
float, double, decimal FLOAT,DOUBLE
varchar, char, tinytext, text, mediumtext, longtext, year STRING,VARCHAR,CHAR
date, datetime, timestamp, time DATE,TIMESTAMP
bit, bool BOOLEAN
tinyblob, mediumblob, blob, longblob, varbinary 不支持

postgres 类型到 hive 类型的转换支持列表

postgresql 类型 支持的 hive 类型 说明
bigint, bigserial, integer, smallint, serial TINYINT,SMALLINT,INT,BIGINT
double precision, money, numeric, real FLOAT,DOUBLE
varchar, char, text, bit, inet STRING,VARCHAR,CHAR
date, time, timestamp DATE,TIMESTAMP
bool BOOLEAN
bytea 不支持

setting 字段配置说明:

参数 类型 是否必选 描述 说明
speed jsonObject 流量控制
errorLimit jsonObject 脏数据控制

setting.speed 字段配置说明:

参数 类型 是否必选 描述 说明
channel int 控制并发数
byte int 同步时的速度

setting.errorLimit 字段配置说明:

参数 类型 是否必选 描述 说明
record int 脏数据阈值
percentage int 脏数据占百分比阈值

配置示例:

{
  "reader": {
    "column": [
      "`id`",
      "`name`",
      "`email`",
      "`desc`",
      "`phone`",
      "`password`",
      "`role`",
      "`proxy_users`",
      "`create_time`",
      "`modify_time`"
    ],
    "datasource": "test11",
    "table": [
      "table1",
      "table2"
    ],
    "splitPk": false,
    "where": "id > 0"
  },
  "writer": {
    "database": "test",
    "table": "table",
    "writeMode": "append",
    "column": [
      {
        "name": "id",
        "type": "VARCHAR"
      },
      {
        "name": "name",
        "type": "VARCHAR"
      },
      {
        "name": "email",
        "type": "VARCHAR"
      },
      {
        "name": "desc",
        "type": "VARCHAR"
      },
      {
        "name": "phone",
        "type": "VARCHAR"
      },
      {
        "name": "password",
        "type": "VARCHAR"
      },
      {
        "name": "role",
        "type": "VARCHAR"
      },
      {
        "name": "proxy_users",
        "type": "VARCHAR"
      },
      {
        "name": "create_time",
        "type": "VARCHAR"
      },
      {
        "name": "modify_time",
        "type": "VARCHAR"
      }
    ]
  },
  "setting": {
    "speed": {
      "channel": 1,
      "byte": 104857600
    },
    "errorLimit": {
      "record": 3,
      "percentage": 0.05
    }
  }
}

2 MySQL/POSTGRES 导入到 HDFS

说明:从 mysql/postgres 导入到 hdfs。

参数 类型 是否必选 描述 说明
type string 导入导出的类型 必须是 "MYSQL_TO_HDFS" 或 "POSTGRES_TO_HDFS"
reader jsonObject 读规则参数
writer jsonObject 写规则参数
setting jsonObject 其他导入规则

reader 参考mysql 导出到 hdfs

writer 中每个元素说明如下:

参数 类型 是否必选 描述 说明
path string HDFS路径名
fileName string 需要导入的文件名,支持动态规则 test_$[yyyyMMdd],关于自定义参数相关内容,详见:[[参数说明 parameter desc]]
writeMode enum 写入模式 支持 APPEND 追加,和OVERWRITE 覆盖,如果选择OVERWRITE 如果目录下有fileName前缀的文件,直接报错
fieldDelimiter string 字段分隔符 当文件类型为TEXT必须要指定,不可以是换行符。
fileType enum 文件格式 目前只支持用户配置为"TEXT"或"ORC",TEXT表示textfile文件格式,ORC表示orcfile文件格式
column jsonArray 需要写入的字段 与reader的中的字段按照数组顺序一一对应

writer.column 中每个字段说明如下:

参数 类型 是否必选 描述 说明
name string 字段名称
type enum 字段类型 HDFS字段类型与hive对应,目前仅支持与以下Hive数据类型: 数值型:TINYINT,SMALLINT,INT,BIGINT,FLOAT,DOUBLE 字符串类型:STRING,VARCHAR,CHAR 布尔类型:BOOLEAN 时间类型:DATE,TIMESTAMP,目前不支持:decimal、binary、arrays、maps、structs、union 类型

setting 参考mysql 导入到 hive

支持的字段映射关系参考mysql 导入 hive。

配置示例:

{
 "reader": {
   "column": [
     "`id`",
     "`name`",
     "`email`",
     "`desc`",
     "`phone`",
     "`password`",
     "`role`",
     "`proxy_users`",
     "`create_time`",
     "`modify_time`"
   ],
   "datasource": "test11",
   "table": [
     "table1",
     "table2"
   ],
   "splitPk": false,
   "where": "id > 0"
 },
 "writer": {
   "path": "/test/temp/here",
   "fileName": "filetest",
   "writeMode": "append",
   "fileType": "ORC",
   "column": [
     {
       "name": "id",
       "type": "VARCHAR"
     },
     {
       "name": "name",
       "type": "VARCHAR"
     },
     {
       "name": "email",
       "type": "VARCHAR"
     },
     {
       "name": "desc",
       "type": "VARCHAR"
     },
     {
       "name": "phone",
       "type": "VARCHAR"
     },
     {
       "name": "password",
       "type": "VARCHAR"
     },
     {
       "name": "role",
       "type": "VARCHAR"
     },
     {
       "name": "proxy_users",
       "type": "VARCHAR"
     },
     {
       "name": "create_time",
       "type": "VARCHAR"
     },
     {
       "name": "modify_time",
       "type": "VARCHAR"
     }
   ]
 },
 "setting": {
   "speed": {
     "channel": 1,
     "byte": 104857600
   },
   "errorLimit": {
     "record": 3,
     "percentage": 0.05
   }
 }
}

3 HIVE 导出到 MySQL/POSTGRES

说明:从 hive 导出到 mysql/postgres 表中。

参数 类型 是否必选 描述 说明
type string 导入导出的类型 必须是 "HIVE_TO_MYSQL" 或 "HIVE_TO_POSTGRES"
reader jsonObject 读规则参数
writer jsonObject 写规则参数
setting jsonObject 其他导入规则

reader 中的字段说明:

参数 类型 是否必选 描述 说明
database string 数据库名称
table string 读取得表,支持动态规则 test_$[yyyyMMdd],关于自定义参数相关内容,详见:[[参数说明 parameter desc]]
where string 筛选条件 不需要要写where,不支持limit等,只支持合法的where语句
querySql string 查询语句 如果需要做复杂查询,这里可以指定查询语句
column array 需要读取的字段 用户需要按照hive SQL语法格式: ["id", "table", "1", "'bazhen.csy'", "null", "to_char(a + 1)", "2.3" , "true"] id为普通列名,table为包含保留在的列名,1为整形数字常量,'bazhen.csy'为字符串常量,null为空指针,to_char(a + 1)为表达式,2.3为浮点数,true为布尔值。

writer 中的字段说明:

参数 类型 是否必选 描述 说明
datasource string 数据源名称
table string 写入表,支持动态规则 test_$[yyyyMMdd],关于自定义参数相关内容,详见:[[参数说明 parameter desc]]
session array DataX在获取Mysql连接时,执行session指定的SQL语句,修改当前connection session属性
preSql string 写入前置操作 写入数据到目的表前,会先执行这里的标准语句。如果 Sql 中有你需要操作到的表名称,请使用 @table 表示,这样在实际执行 Sql 语句时,会对变量按照实际表名称进行替换。多行语句之间用 ";"
postSql string 写入后置操作 参考前置操作。多行语句之间用 ";"
writeMode string 写入模式 支持 INSERT(insert into)/REPLACE (replace into)/UPDATE(ON DUPLICATE KEY UPDATE)
batchSize long 批量提交记录的大小 一次性批量提交的记录数大小,该值可以极大减少DataX与Mysql的网络交互次数,并提升整体吞吐量。但是该值设置过大可能会造成DataX运行进程OOM情况。
column array 需要读取的字段 用户需要按照hive SQL语法格式: ["id", "table", "1", "'bazhen.csy'", "null", "to_char(a + 1)", "2.3" , "true"] id为普通列名,table为包含保留在的列名,1为整形数字常量,'bazhen.csy'为字符串常量,null为空指针,to_char(a + 1)为表达式,2.3为浮点数,true为布尔值。

支持的字段映射关系

mysql 类型 支持的 hive 类型 说明
int, tinyint, smallint, mediumint, int, bigint TINYINT,SMALLINT,INT,BIGINT
float, double, decimal FLOAT,DOUBLE
varchar, char, tinytext, text, mediumtext, longtext, year STRING,VARCHAR,CHAR
date, datetime, timestamp, time DATE,TIMESTAMP
bit, bool BOOLEAN
tinyblob, mediumblob, blob, longblob, varbinary 不支持

配置示例:

{
  "name": "HIVE_TO_MYSQL",
  "reader": {
    "column": [
      "`id`",
      "`name`",
      "`email`",
      "`desc`",
      "`phone`",
      "`password`",
      "`role`",
      "`proxy_users`",
      "`create_time`",
      "`modify_time`"
    ],
    "datasource": "test11",
    "table": "table1",
    "where": "id > 0"
  },
  "writer": {
    "datasource": "database1",
    "table": "table",
    "writeMode": "INSERT",
    "column": [
      "`id`",
      "`name`",
      "`email`",
      "`desc`",
      "`phone`",
      "`password`",
      "`role`",
      "`proxy_users`",
      "`create_time`",
      "`modify_time`"
    ]
  },
  "setting": {
    "speed": {
      "channel": 1,
      "byte": 104857600
    },
    "errorLimit": {
      "record": 3,
      "percentage": 0.05
    }
  }
}

4 HIVE 导出到 MongoDB

说明:从 HIVE 导出到 MongoDB 表中。

参数 类型 是否必选 描述 说明
type string 导入导出的类型 必须是 "HIVE_TO_MONGODB"
reader jsonObject 读规则参数
writer jsonObject 写规则参数
setting jsonObject 其他导入规则

reader 配置参考 hive 到 mysql

writer 配置字段说明:

参数 类型 是否必选 描述 说明
datasource string 数据源名称
table string 写入表,支持动态规则 test_$[yyyyMMdd],关于自定义参数相关内容,详见:[[参数说明 parameter desc]]
writeMode enum 写入模式 支持4种写入模式,1追加 INSERT,2更新UPDATE,3更新或追加 UPSET,4.覆盖 OVERWRITE 注意选择2.3模式需要制定upsetKey
column array MongoDB的文档列名
upsetKey string 更新的依据字段 字段值相同的会做更新操作,字段可以为“name”,"user.name"等

column 配置字段说明:

参数 类型 是否必选 描述 说明
name boolean 列名 列名支持所有mongo支持的指定字段写法,例如“name”,"user.name","user[0].name"
type string 类型 支持几乎所有mongodb的类型:DOUBLE,STRING,OBJECT(只接受json格式的string),BINARY,OBJECT_ID(所有的object_id值均当做string处理),BOOLEAN,DATE,INT,TIMESTAMP,LONG,DECIMAL,ARRAY

支持的字段转换

mongodb 类型 支持的 hive 类型 说明
int, Long TINYINT,SMALLINT,INT,BIGINT
double FLOAT,DOUBLE
string STRING,VARCHAR,CHAR
date DATE,TIMESTAMP
boolean BOOLEAN
bytes binary
object MAP,STRUCT
array ARRAY

配置示例:

{
  "job": {
    "content": [
      {
        "reader": {
          "column": [
            "`name`",
            "`desc`",
            "`create_time`"
          ],
          "datasource": "import",
          "table": "data_test",
          "where": "id > 0"
        },
        "writer": {
          "name": "mongodbwriter",
          "parameter": {
            "address": [
              "172.18.1.22:27028"
            ],
            "collectionName": "user2",
            "column": [
              {
                "name": "user.name",
                "type": "STRING"
              },
              {
                "name": "user.info",
                "type": "OBJECT"
              }
            ],
            "dbName": "datax_test",
            "writeMode": "UPSET",
            "upsertKey": "user.name"
          }
        }
      }
    ],
    "setting": {
      "speed": {
        "channel": 1
      }
    }
  }
}

5 File 导入到 Hive 任务的参数信息

说明:从 file 导入到 hive 表中。

参数 类型 是否必选 描述 说明
type string 导入导出的类型 必须是 "FILE_TO_HIVE"
reader jsonObject 读文件规则参数
writer jsonObject 写hive规则参数
setting jsonObject 其他导入规则

reader配置参数详解

参数 类型 是否必选 描述 说明
fieldDelimiter string 字段分隔符 当文件类型为TEXT必须要指定,不可以是换行符。
srcColumn array 文件字段说明
targetColumn array 需要导入的字段
fileName string 需要导入本地文件名 如果是工作流内的本地文件请填写文件名,和hdfs目录至少填写一个,如果都配置,优先使用fileName
hdfsPath string 需要导入hdfs目录 如果是hdfs上的文件,填写hdfs目录名称,会导入hdfs目录下的所有文件
fileCode string 文件的编码 默认为UTF-8,支持所有hive支持的文件编码

reader column配置参数详解

参数 类型 是否必选 描述 说明
name string 字段名称
type enum 字段类型 如果是常量或者是函数,请使用其他类型OTHER,srcColumn不支持OTHER类型
dateFormat string 时间格式化字段 如果是date类型,请指定时间格式化方式,默认为yyyy-MM-dd

write 配置参考 mysql 写 hive

支持的类型转换

file 类型 支持的 hive 类型 说明
TINYINT,SMALLINT,INT,BIGINTint TINYINT,SMALLINT,INT,BIGINT
FLOAT,DOUBLE FLOAT,DOUBLE
STRING,VARCHAR,CHAR STRING,VARCHAR,CHAR
DATE,TIMESTAMP DATE,TIMESTAMP
BOOLEAN BOOLEAN