我创建了最简单的kafka接收器配置,我正在使用汇合4.1.0:
{
"connector.class":
"io.confluent.connect.elasticsearch.ElasticsearchSinkConnector",
"type.name": "test-type",
"tasks.max": "1",
"topics": "dialogs",
"name": "elasticsearch-sink",
"key.ignore": "true",
"connection.url": "http://localhost:9200",
"schema.ignore": "true"
}
在主题中我将消息保存在 JSON
中{ "topics": "resd"}
但结果我收到错误:
引起:org.apache.kafka.common.errors.SerializationException:错误反序列化id为-1的Avro消息 引起:org.apache.kafka.common.errors.SerializationException:未知的魔术字节!
答案 0 :(得分:2)
正如cricket_007所说,你需要告诉Connect使用Json deserialiser,如果这是你的数据所在的格式。将它添加到连接器配置中:
"value.converter": "org.apache.kafka.connect.json.JsonConverter",
"value.converter.schemas.enable": "false",
"key.converter": "org.apache.kafka.connect.json.JsonConverter",
"key.converter.schemas.enable": "false"
答案 1 :(得分:1)
发生该错误是因为它试图读取非Confluent Schema Registry编码的Avro消息。
如果主题数据是Avro,则需要使用Schema Registry。
否则,如果主题数据是JSON,那么您已经在属性文件中的键或值上启动了带有AvroConverter的连接群集,您需要在其中使用JsonConverter