Confluent实战(1)把Kafka数据实时导入InfluxDB

1.安装kafka-connect-influxdb

运行如下命令

confluent-hub install confluentinc/kafka-connect-influxdb:1.1.2

截图如下
在这里插入图片描述
出错,安装失败,原因是未设置好confluent的安装目录和bin目录,因此需要设置一下,运行如下脚本

# 安装位置修改为自己对应的地方

export CONFLUENT_HOME=/Users/yangliu/Documents/05demos/confluent-5.5.0
export PATH=$PATH:$CONFLUENT_HOME/bin

重新执行安装的命令就好了,会在$CONFLUENT_HOME/share/confluent-hub-components下安装好,并且提供相关配置

2. 使用connect进行数据同步

https://docs.confluent.io/current/connect/kafka-connect-influxdb/influx-db-sink-connector/index.html

增加配置文件,在$CONFLUENT_HOME下面
文件位置:etc/kafka-connect-influxdb/influxdb-sink-connector.properties

name=InfluxDBSinkConnector
connector.class=io.confluent.influxdb.InfluxDBSinkConnector
tasks.max=1
topics=testa
influxdb.url=http://localhost:8086
influxdb.db=influxTestDBa
measurement.name.format=${topic}
value.converter=org.apache.kafka.connect.json.JsonConverter
# 注意此配置,json格式要严格按照该Connector
value.converter.schemas.enable=true
key.converter=org.apache.kafka.connect.storage.StringConverter

然后在已经启动confluent的情况下,装上该Connector,命令如下。只能先启动confluent然后装上Connector

#装配
confluent local load InfluxDBSinkConnector -- -d etc/kafka-connect-influxdb/influxdb-sink-connector.properties

如果需要修改配置,则暂时卸下该Connector,然后修改完重新装上

# 卸载
confluent local unload InfluxDBSinkConnector -- -d etc/kafka-connect-influxdb/influxdb-sink-connector.properties

3. 有关数据格式的文章详解

这个Connector好像并不是那么好用,关于其数据结构的序列化解释有如下

https://www.confluent.io/blog/kafka-connect-deep-dive-converters-serialization-explained/

如果是json格式,则第一层的key必须是schemapayload

如果是其他字符串格式,目前没有调试出来

4. 查看日志

https://docs.confluent.io/current/cli/command-reference/confluent-local/confluent_local_log.html

less 方式查看日志

# log
confluent local log connect

命令q代表退出,命令G代表翻到最后一行

5. Python脚本测试

Python脚本如下,里面json的格式就是该Connector规定的格式来的

from kafka import KafkaProducer
import time
import json

if __name__ == '__main__':
    producer = KafkaProducer(bootstrap_servers='192.168.1.119:9092', value_serializer=lambda v: json.dumps(v).encode('utf-8'))
    value = "hereTime" + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
    # producer.send('conkafkainflux', value=bytes(value, encoding = "utf8"), partition=0)
    producer.send('testa', {"schema":{"type":"struct","fields":[{"type":"map","keys":{"type":"string","optional":False},"values":{"type":"string","optional":False},"optional":False,"field":"tags"},{"type":"string","optional":False,"field":"time"},{"type":"double","optional":True,"field":"value"}],"optional":False,"version":1},"payload":{"tags":{"id":"5"},"time":"2019-07-25T11:43:19.201040841Z","value":500.0}},
                  partition=0)
    producer.flush()

如下,就是目前的结果
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值