td版本:3.0.7.1
指路:td官网TDengine Kafka Connector使用步骤
1.废话步骤之安装td(docker-compose方式)
version: "3.0"
services:
tdengine:
image: tdengine/tdengine:3.0.7.1
container_name: tdengine
restart: always
hostname: tdengine
ports:
- 6030:6030
- 6041:6041
- 6043-6049:6043-6049
- 6043-6049:6043-6049/udp
environment:
TAOS_FQDN: "tdengine"
TAOS_FIRST_EP: "tdengine"
volumes:
- ./data:/var/lib/taos/
- ./log:/var/log/taos/
- ./temp:/var/temp
2.安装kafka(docker-compose方式)
version: "3"
services:
zookeeper:
image: 'bitnami/zookeeper:3.6'
container_name: zookeeper
restart: always
ports:
- 2181:2181
environment:
- ALLOW_ANONYMOUS_LOGIN=yes
kafka:
image: 'bitnami/kafka:3.0'
container_name: 'kafka'
restart: always
ports:
- 9092:9092
- 8083:8083 #暴露插件端口
environment:
- KAFKA_BROKER_ID=1
- KAFKA_CFG_LISTENERS=PLAINTEXT://:9092
- KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://ip:9092
- KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
- ALLOW_PLAINTEXT_LISTENER=yes
- KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=false
- KAFKA_CFG_LOG_RETENTION_HOURS=6
depends_on:
- zookeeper
volumes:
- /usr/local/kafka_components:/components #映射插件目录(下面步骤会用到)
注:使用TSDB方式连接连接td需要安装td客户端
附下载地址:td-client下载地址
3.安装 TDengine Connector 插件
(1)官方步骤下载会超时,建议从github直接下载源码zip
指路下载地址:Tdengine Connector
在idea打包插件,执行命令
mvn clean package -Dmaven.test.skip=true
取出生成目录target/components/packages/
下的zip文件,解压后放到第1步指定的宿主机目录/usr/local/kafka_components下
(2)进入kafka容器内部config目录,修改connect-distributed.properties
参数加入插件目录plugin.path=/components
(第1步docker-compose.yml所映射容器内部插件存放目录)
4.启动kafka
进入docker-compose.yml目录,执行命令
docker-compose up -d
5.进入kafka容器内部bin目录下,执行命令
connect-distributed.sh -daemon $KAFKA_HOME/config/connect-distributed.properties
6.验证kafka connect是否成功
curl http://localhost:8083/connectors
成功控制台会输出
[]
7.测试TDengine Sink Connector
(1)准备sink-demo.json
{
"name": "TDengineSinkConnector",
"config": {
"connector.class": "com.taosdata.kafka.connect.sink.TDengineSinkConnector",
"tasks.max": "1",
"topics": "sink",
"connection.url": "jdbc:TAOS://ip:6030",
"connection.user": "root",
"connection.password": "taosdata",
"connection.database": "sink",
"connection.database.prefix": ,
"db.schemaless": "line",
"key.converter": "org.apache.kafka.connect.storage.StringConverter",
"value.converter": "org.apache.kafka.connect.storage.StringConverter"
}
}
(2)新增connector,执行命令
curl -X POST -d @sink-demo.json http://localhost:8083/connectors -H "Content-Type: application/json"
成功控制台会输出connector配置信息
注意事项:
1.使用connection.database.prefix配置时,官网${topic}配置默认占位的,所以纯粹使用topic作为数据库名的时候,无需配置
2.使用connection.database.prefix配置时,如果topic配置了多个,会出现以下问题,建议使用connection.database.prefix配置时,topic只配置一个
3.如果想要配置connector自动创建数据库的KEEP和DURATION,建议直接修改源码
(3)准备kafka数据test-data.txt
sink,location=California.LosAngeles,groupid=2 current=11.8,voltage=221,phase=0.28 1648432611249000000
sink,location=California.LosAngeles,groupid=2 current=13.4,voltage=223,phase=0.29 1648432611250000000
sink,location=California.LosAngeles,groupid=3 current=10.8,voltage=223,phase=0.29 1648432611249000000
sink,location=California.LosAngeles,groupid=3 current=11.3,voltage=221,phase=0.35 1648432611250000000
(4)向kafka发送数据,执行命令
cat test-data.txt | kafka-console-producer.sh --broker-list localhost:9092 --topic sink
(5)taos执行命令,查看是否同步
use sink
注意事项:
1.如果想要自定义子表名,需要在修改i客户端配置,编辑/etc/taos下的taos.cfg文件,新增配置
smlChildTableName=<子表名字段>
influxDB格式如下
<超表名>,<子表名>,<tag(逗号分隔)> 空格 <字段(逗号分隔)> 空格 时间戳
附:
查看所有connector
curl -s -X GET "http://localhost:8083/connectors/"
删除connector
curl -s -X DELETE "http://localhost:8083/connectors/<连接名>"
查看connector状态
curl -s -X GET "http://localhost:8083/connectors/<连接名>/status"
改造源码部分截图:
1.SinkConfig
2.TdengineSinkTask