Apache kafka 需要使用ApacheNIFI将记录单独发送到Kafka

Apache kafka 需要使用ApacheNIFI将记录单独发送到Kafka,apache-kafka,schema,apache-nifi,avro,Apache Kafka,Schema,Apache Nifi,Avro,我正在从测试场景的nifi用户日志文件本身读取流/批处理格式的记录,并使用ConvertRecord nifi processor转换为Avro格式,然后使用PublishKafka_2_0 processor发布到kafka主题。我还使用模式注册表进行模式确认。因此,现在当记录转储到kafka上时,它将作为单个数组而不是单个记录来完成。是否有办法将记录拆分为单个实体。我已经试过Split records processor,但它似乎没有达到预期效果。有没有其他方法可以实现这一目标 --更新的要

我正在从测试场景的nifi用户日志文件本身读取流/批处理格式的记录,并使用ConvertRecord nifi processor转换为Avro格式,然后使用PublishKafka_2_0 processor发布到kafka主题。我还使用模式注册表进行模式确认。因此,现在当记录转储到kafka上时,它将作为单个数组而不是单个记录来完成。是否有办法将记录拆分为单个实体。我已经试过Split records processor,但它似乎没有达到预期效果。有没有其他方法可以实现这一目标


--更新的

要获得正确的反馈,请共享一个重现问题的流程,但是以下步骤有望满足您的要求:

  • 在发送到卡夫卡之前直接拆分您的邮件,并确认拆分确实成功
  • 尝试发布卡夫卡记录2.0,而不是发布卡夫卡2.0
  • 将最大消息大小设置为1字节而不是1MB
是否在Avro转换前进行拆分?您的模式是数组吗?我使用了SplitRecord处理器,在split和Conversion中,这两个处理器都是使用grok读取器在Avro中读取,AvroRecordSetWrite在Avro中写入。。但它不起作用。您使用哪个卡夫卡处理器来发布记录?请描述您的数据的原始格式,如何将其转换为Avro以及模式是什么。我已根据您的评论更新了答案,下面是用于相同的模式:{“类型”:“记录”,“名称”:“nifi_日志”,“名称空间”:“xyz.abc”,“字段”:[{“名称”:“时间戳”,“类型”:“字符串”},{“名称”:“级别”,“类型”:“字符串”},{“名称”:“线程”,“类型”:“字符串”},{“名称”:“类”,“类型”:“字符串”},{“名称”:“消息”,“类型”:“字符串”},”,{“name”:“stackTrace”,“type”:“string”}]}