【发布时间】:2019-03-19 04:14:43
【问题描述】:
我正在尝试使用 Confluent InfluxDB Sink Connector 将来自 kafka 主题的数据获取到我的 InfluxDB 中。
首先,我使用 nifi 将数据从日志文件传输到 kafka 主题,效果很好。 kafka topic获取数据,如下:
{
"topic": "testDB5",
"key": null,
"value": {
"timestamp": "2019-03-20 01:24:29,461",
"measurement": "INFO",
"thread": "NiFi Web Server-795",
"class": "org.apache.nifi.web.filter.RequestLogger",
"message": "Attempting request for (anonymous)
},
"partition": 0,
"offset": 0
}
然后,我通过 Kafka Connect UI 创建 InfluxDB 接收器连接器,我得到以下异常:
org.apache.kafka.connect.errors.ConnectException: Exiting WorkerSinkTask due to unrecoverable exception.
at org.apache.kafka.connect.runtime.WorkerSinkTask.deliverMessages(WorkerSinkTask.java:587)
at org.apache.kafka.connect.runtime.WorkerSinkTask.poll(WorkerSinkTask.java:323)
at org.apache.kafka.connect.runtime.WorkerSinkTask.iteration(WorkerSinkTask.java:226)
at org.apache.kafka.connect.runtime.WorkerSinkTask.execute(WorkerSinkTask.java:194)
at org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:175)
at org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:219)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NullPointerException
at io.confluent.influxdb.InfluxDBSinkTask.put(InfluxDBSinkTask.java:140)
at org.apache.kafka.connect.runtime.WorkerSinkTask.deliverMessages(WorkerSinkTask.java:565)
... 10 more
但是如果我手动输入数据到另一个主题 testDB1 使用
./bin/kafka-avro-console-producer --broker-list localhost:9092 --topic testDB1 --property value.schema='{"type":"record","name":"myrecord","fields":[{"name":"measurement","type":"string"},{"name":"timestamp","type":"string"}]}'
有效,我的influxDB可以获取数据。
这里是连接配置:
connector.class=io.confluent.influxdb.InfluxDBSinkConnector
influxdb.url=http://myurl
tasks.max=1
topics=testDB5
连接主题testDB1的配置除了主题名称相同。
nifi 有什么问题吗?但它可以很好地将数据传输到主题。
【问题讨论】:
-
如何序列化写入 Kafka 主题的数据?您在 Kafka Connect 工作程序属性文件中使用了哪些序列化程序 (
converter) 设置? -
在etc/schema-registry/connect-avro-distributed.properties中,设置为:
key.converter=io.confluent.connect.avro.AvroConverter key.converter.schema.registry.url=http://localhost:8081 value.converter=io.confluent.connect.avro.AvroConverter value.converter.schemas.enable=false value.converter.schema.registry.url=http://localhost:8081 -
如何序列化写入 Kafka 主题的数据?
-
在 nifi flow 中,我使用 GrokReader 读取日志文件,然后使用 AvroRecordSetWriter 写入 kafka 主题,您可以再次点击链接了解更多详情link
标签: apache-nifi apache-kafka-connect confluent-platform