kafka连接HDFS接收器连接器失败

时间:2018-08-14 08:14:35

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

我正在尝试使用Kafka connect sink将文件从Kafka写入HDFS。

我的属性如下:

connector.class=io.confluent.connect.hdfs.HdfsSinkConnector
flush.size=3
format.class=io.confluent.connect.hdfs.parquet.ParquetFormat
key.converter=org.apache.kafka.connect.json.JsonConverter
value.converter=org.apache.kafka.connect.json.JsonConverter
schema.compatability=BACKWARD
key.converter.schemas.enabled=false
value.converter.schemas.enabled=false
schemas.enable=false

当我尝试运行连接器时,出现以下异常:

  

org.apache.kafka.connect.errors.DataException:具有schemas.enable的JsonConverter需要“ schema”和“ payload”字段,并且可能不包含其他字段。如果您要反序列化纯JSON数据,请在转换器配置中设置schemas.enable = false。

我正在使用Confluent版本4.0.0。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我对这个问题的理解是,如果您设置schemas.enable = true,则会告诉kafka您希望将架构包含在kafka必须传输的消息中。在这种情况下,kafka消息没有纯json格式。相反,它首先描述了架构,然后附加了与该架构相对应的有效负载(即实际数据)(请参阅有关AVRO格式的信息)。这导致了冲突:一方面,您为数据指定了JsonConverter,另一方面,您要求kafka将模式包含在消息中。要解决此问题,可以将AvroConverter与schemas.enable = true一起使用,或者将JsonCOnverter与schemas.enable = false一起使用。