【问题标题】:kafka streams - rich mapperskafka 流 - 丰富的映射器
【发布时间】:2017-04-05 17:43:39
【问题描述】:

问题:我在 kafka 主题中有记录,需要使用 MySQL 数据库(以及其他)中的元数据扩充。使用 Flink,可以实现 丰富的映射器,因此一个连接可以重复用于多个记录。

kafka 流 (java) 中是否有类似的功能?


随机想法:到目前为止,我发现了以下变体:

  • mappers (lambda):为每条记录创建一个新实例...
  • transformers/processors:用于有状态操作(很棒!),但也意味着使用状态存储(在我的用例中不需要)

我错过了什么?

注意:我也想过kafka-connect,但是我需要在两个kafka topic之间转换数据,而不是在外部系统之间...

【问题讨论】:

    标签: java apache-kafka apache-kafka-streams


    【解决方案1】:

    正是 Matthias J. Sax 在他的回答中所说的:ProcessorTransformer 可以是无状态的或有状态的。

    作为参考,我还要指出 Confluent 的 Kafka Streams API 文档中的以下 sn-ps(intro at http://docs.confluent.io/3.2.0/streams/developer-guide.html#processor-api

    处理器 API 可用于实现无状态有状态操作,后者是通过使用状态存储来实现的。

    还有一个实现无状态Transformer 的演示应用程序: https://github.com/confluentinc/examples/blob/3.2.x/kafka-streams/src/test/java/io/confluent/examples/streams/MixAndMatchLambdaIntegrationTest.java

    上面的示例(confluentinc/examples 的分支 3.2.x)适用于带有 Apache Kafka 0.10.2.0 的 Confluent 3.2.0。

    【讨论】:

      【解决方案2】:

      你也可以在没有状态的情况下使用transfrom()/process()——状态是可选的。因此,这应该可以满足您的需求。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-20
        • 2013-05-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多