简体中文| English
TDengineWriter插件实现了写入数据到TDengine数据库目标表的功能。底层实现上,TDengineWriter通过JDBC连接TDengine,按照TDengine的SQL语法,执行insert语句/schemaless语句,将数据写入TDengine。
TDengineWriter可以作为数据迁移工具供DBA将其它数据库的数据导入到TDengine。
TDengineWriter 通过 DataX 框架获取 Reader生成的协议数据,通过JDBC Driver连接TDengine,执行insert语句/schemaless语句,将数据写入TDengine。
在TDengine中,table可以分成超级表、子表、普通表三种类型,超级表和子表包括colum和tag,子表的tag列的值为固定值,普通表与关系型数据库中表的概念一致。(详细请参考:数据模型 )
TDengineWriter支持向超级表、子表、普通表中写入数据,按照table的类型和column参数中是否包含tbname,使用以下方法进行写入:
- table为超级表,column中指定tbname:使用自动建表的insert语句,使用tbname作为子表的名称。
- table为超级表,column中未指定tbname:使用schemaless写入,TDengine会根据超级表名、tag值计算一个子表名称。
- table为子表:使用insert语句写入,ignoreTagUnmatched参数为true时,忽略record中tag值与table的tag值不一致的数据。
- table为普通表:使用insert语句写入。
配置一个写入TDengine的作业 先在TDengine上创建超级表:
create database if not exists test;
create table test.weather (ts timestamp, temperature int, humidity double) tags(is_normal bool, device_id binary(100), address nchar(100));
使用下面的Job配置,将数据写入TDengine:
{
"job": {
"content": [
{
"reader": {
"name": "streamreader",
"parameter": {
"column": [
{
"type": "string",
"value": "tb1"
},
{
"type": "date",
"value": "2022-02-20 12:00:01"
},
{
"type": "long",
"random": "0, 10"
},
{
"type": "double",
"random": "0, 10"
},
{
"type": "bool",
"random": "0, 50"
},
{
"type": "bytes",
"value": "abcABC123"
},
{
"type": "string",
"value": "北京朝阳望京"
}
],
"sliceRecordCount": 1
}
},
"writer": {
"name": "tdenginewriter",
"parameter": {
"username": "root",
"password": "taosdata",
"column": [
"tbname",
"ts",
"temperature",
"humidity",
"is_normal",
"device_id",
"address"
],
"connection": [
{
"table": [
"weather"
],
"jdbcUrl": "jdbc:TAOS-RS://192.168.56.105:6041/test"
}
],
"batchSize": 100,
"ignoreTagsUnmatched": true
}
}
}
],
"setting": {
"speed": {
"channel": 1
}
}
}
}
- jdbcUrl
- 描述:数据源的JDBC连接信息,TDengine的JDBC信息请参考:Java连接器的使用
- 必选:是
- 默认值:无
- username
- 描述:用户名
- 必选:是
- 默认值:无
- password
- 描述:用户名的密码
- 必选:是
- 默认值:无
- table
- 描述:表名的集合,table应该包含column参数中的所有列(tbname除外)。注意,column中的tbname会被当作TDengine中子表名使用。
- 必选:是
- 默认值:无
- column
- 描述:字段名的集合,字段的顺序应该与record中column的
- 必选:是
- 默认值:无
- batchSize
- 描述:每batchSize条record为一个batch进行写入
- 必选:否
- 默认值:1
- ignoreTagsUnmatched
- 描述:当table为TDengine中的一张子表,table具有tag值。如果数据的tag值与table的tag值不想等,数据不写入到table中。
- 必选:否
- 默认值:false
datax中的数据类型,可以映射到TDengine的数据类型
DataX 内部类型 | TDengine 数据类型 |
---|---|
INT | TINYINT, SMALLINT, INT |
LONG | TIMESTAMP, TINYINT, SMALLINT, INT, BIGINT |
DOUBLE | FLOAT, DOUBLE |
STRING | TIMESTAMP, BINARY, NCHAR |
BOOL | BOOL |
DATE | TIMESTAMP |
BYTES | BINARY |
下面是一些数据源到TDengine进行数据迁移的示例
数据迁移示例 | 配置的示例 |
---|---|
TDengine到TDengine | 超级表到超级表,指定tbname |
TDengine到TDengine | 超级表到超级表,不指定tbname |
TDengine到TDengine | 超级表到子表 |
TDengine到TDengine | 普通表到普通表 |
RDBMS到TDengine | 普通表到超级表,指定tbname |
RDBMS到TDengine | 普通表到超级表,不指定tbname |
RDBMS到TDengine | 普通表到子表 |
RDBMS到TDengine | 普通表到普通表 |
OpenTSDB到TDengine | metric到普通表 |
建表语句:
单行记录类似于:
-
执行DataX的机器参数为:
- cpu:
- mem:
- net: 千兆双网卡
- disc: DataX 数据不落磁盘,不统计此项
-
TDengine数据库机器参数为:
- cpu:
- mem:
- net: 千兆双网卡
- disc:
-Xms1024m -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError
通道数 | DataX速度(Rec/s) | DataX流量(MB/s) | DataX机器网卡流出流量(MB/s) | DataX机器运行负载 | DB网卡进入流量(MB/s) | DB运行负载 | DB TPS |
---|---|---|---|---|---|---|---|
1 | |||||||
4 | |||||||
8 | |||||||
16 | |||||||
32 |
说明:
是的,TDengineWriter按照column中字段的顺序解析来自datax的数据。