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