【问题标题】:Kafka Connect Transformation: What is the difference between `...$Key` and `...$Value`?Kafka Connect 转换:`...$Key` 和 `...$Value` 有什么区别?
【发布时间】:2020-04-16 15:31:31
【问题描述】:

问题

Kafka Connect Transformation 上的Kafka's Documentation 声明如下:

使用为记录键(org.apache.kafka.connect.transforms.InsertField$Key)或值(org.apache.kafka.connect.transforms.InsertField$Value)设计的具体转换类型

...InsertField$Key...InsertField$Value 有什么区别,我们什么时候使用?

此外,一般来说,...$Key...$Value 的语义目的是什么? (我想对于某些转换,它可能对键或值起作用。)

详情

上面关于 Kafka Connect 的文档部分提供了一个如何使用 org.apache.kafka.connect.transforms.InsertField 转换的示例。示例的一部分需要将转换类型设置为org.apache.kafka.connect.transforms.InsertField$Value

除了上面引用的行之外,在其他任何地方都没有提到org.apache.kafka.connect.transforms.InsertField$Key。我想不出需要org.apache.kafka.connect.transforms.InsertField$Key 的情况,或者它的工作方式会有什么不同。

我看过的地方

Confluent docs on transformation 上,似乎某些转换(例如drop)既可以作用于键也可以作用于值,因此区分...$Key...$Value 是有意义的,两者的示例是文档中给出。

但是,对于像insert 这样的转换,从技术上讲,谈论...$Key...$Value 是没有意义的,因此文档只提供了...$Value 的示例。

【问题讨论】:

    标签: apache-kafka apache-kafka-connect


    【解决方案1】:

    Kafka 记录的键和值都能够保存结构化数据。因此,插入变换适用于两者,原因与 drop 相同

    【讨论】:

    • 您好,感谢您的回复。我最初的理解是InsertField$KeyInsertField$Value 都插入了一个新字段(即同时具有键和值)。看了confluent.io/blog/…的文章,我了解到每个Kafka记录都是一个键值对,键和值本身可以由键值对组成。 ...$Key...$Value 指的是记录级别的键值,而不是键的键值或记录的值。
    • 两者都将键值对插入记录的键或值结构中
    猜你喜欢
    • 2012-04-18
    • 2013-06-24
    • 1970-01-01
    • 2012-01-25
    • 2013-09-22
    • 1970-01-01
    • 1970-01-01
    • 2015-10-12
    • 2017-02-16
    相关资源
    最近更新 更多