【问题标题】:Nifi, how to produce via Kafka avro files with multiple records each fileNifi,如何通过 Kafka avro 文件生成每个文件有多个记录
【发布时间】:2022-02-16 01:16:19
【问题描述】:

我创建了一个管道来处理单个 json 文件(一个包含 5890 个元素的向量,每个元素一个记录)并通过 Kafka 以 avro 格式发送它。生产者工作正常,然后当我与消费者一起阅读时,每条记录都会得到一个流文件(一个 avro 文件)。 5890 个 avro 文件。如何在单个 avro 文件中设置或合并更多记录?

我只是使用 PublishKafkaRecord_0_10 1.5.0(jsonTreeReader 1.5.0 和 AvroRecordSetWriter 1.5.0)和 ConsumeKafka_0_10 1.5.0。

【问题讨论】:

  • 我推荐你试试 ConsumeKafkaRecord 和 AvroReader (nifi.apache.org/docs/nifi-docs/components/org.apache.nifi/…)
  • 不错。问:avro文件的数量是生产者设置的吗?我的意思是,如果消费者不是 nifi 处理器(可能是 Java 应用程序),那么另一边的人是否必须处理那些 5890 avro 文件?
  • 我不太明白您要解决的问题。 Kafka 不应该用于文件传输;让每条 Kafka 消息成为一个 Avro 事件有什么问题?
  • 我一直负责这个,我也不明白。我不确定接收者是不是技术熟练的人,我想看看是否有办法将记录放在生产者已经在较少的 avro 文件中。

标签: json apache-kafka apache-nifi avro


【解决方案1】:

首先,NiFi 1.5.0 是从 2018 年 1 月开始的。请考虑升级,因为它已经非常过时了。 NiFi 1.15.3 是今天的最新版本。

其次,*Kafka_0_10 处理器适用于非常旧版本的 Kafka - 您真的使用 v0.10 的 Kafka 吗?您有以下 Kafka 版本的处理器:

如果您提供输入和期望输出的示例以及您实际尝试实现的目标,将会很有用。

如果您希望在 NiFi 中使用这些消息,并且想要一个包含许多消息的 FlowFile,您应该使用 ConsumeKafkaRecord 而不是 ConsumeKafka。这将使您可以控制每个“文件”要查看多少条记录。

如果您的消费者不是 NiFi,那么要么他们需要合并,要么您需要在生产时将所有记录捆绑到一条更大的消息中。然而,这并不是 Kafka 的真正意义所在,因为它不适合处理大型消息/文件。

【讨论】:

  • '或者你需要在生产时将所有记录捆绑到一个更大的消息中'。这正是我在说的。至于我们为什么要使用 Kafka,我不明白这也是我的客户想要的。
  • @RiccardoLamera 不要使用 PublishKafkaRecord,只需使用 PublishKafka 并将整个 FF 作为一条消息发送
猜你喜欢
  • 2018-10-14
  • 1970-01-01
  • 2015-04-25
  • 2018-01-06
  • 2019-12-27
  • 1970-01-01
  • 1970-01-01
  • 2020-07-26
  • 1970-01-01
相关资源
最近更新 更多