-
Notifications
You must be signed in to change notification settings - Fork 18
import and export
caojingwei edited this page Aug 19, 2017
·
9 revisions
本文档主要说明任务结点中,导入导出任务的相关协议。
说明:从 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
}
}
}
说明:从 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
}
}
}
说明:从 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
}
}
}
说明:从 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
}
}
}
}
说明:从 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 |