DataX/iotdbwriter/doc/iotdbwriter-CN.md
2024-07-19 15:08:29 +08:00

5.1 KiB
Raw Blame History

DataX IoTDBWriter

1 快速介绍

IoTDBWriter插件实现了写入数据到IoTDB数据库目标表(设备)的功能。

底层实现上IoTDBWriter通过iotdb.session连接IoTDB按照IoTDB的SQL语法 执行session.insertRecordsOfOneDevice语句将数据写入IoTDB。

IoTDBWriter可以作为数据迁移工具供DBA将其它数据库的数据导入到IoTDB。

2 实现原理

IoTDBWriter 通过 DataX 框架获取 Reader 生成的协议数据Record通过Session连接IoTDB执行insert语句将数据写入IoTDB。

IoTDB中设备与列的概念见IoTDB官方文档。

3 功能说明

3.1 配置样例

配置一个MySQL数据写入IoTDB的作业

使用下面的Job配置将数据写入IoTDB

{
  "job": {
    "content": [
      {
        "reader": {
          "name": "mysqlreader",
          "parameter": {
            "username": "root",
            "password": "toy123",
            "column": ["time","A5STD","L2RIS014MD","L2VVP003SM5","D1RIS001MD","D1KRT003EU"],
            "splitPk": "",
            "connection": [
              {
                "table": [
                  "device"
                ],
                "jdbcUrl": [
                  "jdbc:mysql://localhost:3306/demodb?useUnicode=true&allowPublicKeyRetrieval=true&characterEncoding=utf-8"
                ]
              }
            ]
          }
        },
        "writer": {
          "name": "iotdbwriter",
          "parameter": {
            "username": "root",
            "password": "root",
            "host": "192.168.150.100",
            "port": 6667,
            "version": "V_1_0",
            "##": "Reader中时间列的位置默认0列",
            "timeColumnPosition": 0,
            "batchSize": 1000,
            "device": "root.cgn.device",
            "measurements": ["A5STD","L2RIS014MD","L2VVP003SM5","D1RIS001MD","D1KRT003EU"],
            "###": "在插入之前预先执行的SQL默认为空",
            "preSql": []
          }
        }
      }
    ],
    "setting": {
      "speed": {
        "channel": 3
      }
    }
  }
}

3.2 参数说明

  • username
    • 描述:用户名
    • 必选:是
    • 默认值:无
  • password
    • 描述:用户名的密码
    • 必选:是
    • 默认值:无
  • host
    • 描述连接iotdb数据库的主机地址
    • 必选:是
    • 默认值:无
  • port
    • 描述:端口
    • 必选:是
    • 默认值:无
  • version
    • 描述iotdb版本
    • 必选:是
    • 默认值:无
  • timeColumnPosition
    • 描述时间列在Record中列的位置
    • 必选:否
    • 默认值0
  • device
    • 描述iotdb中的概念对应mysql中的表名
    • 必选:是
    • 默认值:无
  • measurements
    • 描述iotdb中的概念对应mysql中的字段集合顺序应该与record中column的顺序相同
    • 必选:是
    • 默认值:无
  • batchSize
    • 描述每batchSize条record为一个batch进行写入
    • 必选:否
    • 默认值1000
  • preSql
    • 描述插入前是否预先执行SQL
    • 必选:否
    • 默认值:无

3.3 类型转换

datax中的数据类型映射到IoTDB的数据类型

DataX 内部类型 IoTDB 数据类型
INT INT32
LONG TIMESTAMP, INT64
DOUBLE DOUBLE
STRING STRING
BOOL BOOL
DATE TIMESTAMP,DATE
BYTES BINARY

3.4 各数据源到IoTDB的参考示例

见datax-example/datax-example-iotdb

4 性能报告

4.1 环境准备

4.1.1 数据特征

建表语句:

单行记录类似于:

4.1.2 机器参数

  • 执行DataX的机器参数为:

    1. cpu:
    2. mem:
    3. net: 千兆双网卡
    4. disc: DataX 数据不落磁盘,不统计此项
  • IoTDB数据库机器参数为:

    1. cpu:
    2. mem:
    3. net: 千兆双网卡
    4. disc:

4.1.3 DataX jvm 参数

-Xms1024m -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError

4.2 测试报告

4.2.1 单表测试报告

通道数 DataX速度(Rec/s) DataX流量(MB/s) DataX机器网卡流出流量(MB/s) DataX机器运行负载 DB网卡进入流量(MB/s) DB运行负载 DB TPS
1
4
8
16
32

4.2.4 性能测试小结

5 约束限制