ElasticsearchSinkConnector无法将数据反序列化为Avro

时间:2018-05-04 20:39:29

标签: apache-kafka apache-kafka-connect confluent

我创建了最简单的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:未知的魔术字节!

2 个答案:

答案 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