当前位置: 首页 > 知识库问答 >
问题:

是否可以重新设置GlobalKTable的键?

冯育
2023-03-14

我想重新设置GlobalKTable的键(可能是在初始化它时,因为我相信它们只在创建之后才被读取)。

这可能吗?

我在一个Spring/JavaKafka Streams应用程序中有两个主题。第一个是不压缩的,第二个是。两者都使用Avro作为它们的键和值。

应用程序从第一个(非压缩)主题流式传输记录,并通过KStream#leftJoin从压缩主题附加附加数据。压缩的主题已作为GlobalKTable引入应用程序,通过StreamsBuilder#globalTable()创建,并且需要保持这种方式(我需要应用程序每个实例中可用的主题所有分区的所有记录)。

我知道有人在谈论支持非主键连接(https://issues.apache.org/jira/browse/KAFKA-3705),但据我所知,我还不能这么做。。。

@Configuration
@EnableKafkaStreams
public class StreamsConfig {

  @Autowired
  private MyCustomSerdes serdes;

  @Bean
  public KStream<AvroKeyOne, AvroValueOne> reKeyJoin(StreamsBuilder streamsBuilder) {

    GlobalKTable<AvroKeyOne, AvroValueOne> globalTable = streamsBuilder.globalTable("topicOne", Consumed.with(
      serdes.getAvroKeyOne()
      serdes.getAvroValueOne()
    ));

    KStream<AvroKeyTwo, AvroValueOne> kStream = streamsBuilder.stream("topicTwo", Consumed.with(
      serdes.getAvroKeyTwo(),
      serdes.getAvroValueOne()
    ));

    kStream.join(
      globalTable,
       /**
        * the KeyValueMapper. I need to rekey the Global table as well to the
        * corresponding String (which it's data will have) if I want this join
        * to return results
        */
      (streamKey, streamValue) -> {return streamKey.getNewStringKey()},
      (/**ValueJoiner Deal**/)
    );
  }

}

共有1个答案

颜河
2023-03-14

我想重新设置GlobalKTable的键(可能是在初始化它时,因为我相信它们只在创建之后才被读取)。

今天没有直接的支持。您已经提到了即将进行的工作,例如为非主键联接的全局表添加支持,但这还不可用。

你现在可以做的是:你可以将原来的Kafka主题重新键入(重新划分)到一个新的主题中,然后将重新键入的主题读入你的全局KTable。也许这是你的选择。

 类似资料:
  • 我很好奇是否可以将iOS设置(例如位置/图片)重置为默认设置,这样用户每次都会被问到是否允许位置或相机使用。 目前,我正在尝试用Ionic/Cordova做这件事。 也许你们中有人知道怎么做,或者能告诉我这是不是可能的。

  • 问题内容: 我想使用Redis从命令行,脚本,Web和电子表格中查询数据。除了电子表格,我可以找到所有其他示例的好例子……不过,我不太清楚从何处开始从MS Excel电子表格进行访问。谷歌让我失望。 请让我知道您会如何建议这样做,谢谢! 那些陌生的Redis的ps是此处描述的键值数据存储区:http : //code.google.com/p/redis/ 问题答案: 我想我用XLLoop找到了我

  • 问题内容: 我知道可以偏斜,但我看不到以特定角度偏斜每个角的方法。 这是我正在从事的项目: 专门查看菜单中的标签。现在,我正在使用图像,我想针对功能强大的浏览器进行更改。 我知道可以创建CSS trapazoid,但是使用没有内容的边框。最终结果还需要一些圆角。 问题答案: 这可能是一个大概的想法:

  • 问题内容: 在JavaScript中使用构造函数创建类时,以后是否可以重新定义类的方法? 例: 现在,我想像这样重新定义: 因此,当我创建另一个时,新方法将被称为: 编辑: 我意识到我可以输入“ Hello”或“Hola”之类的参数来完成不同的输出。我还意识到我可以像这样简单地为p2分配一个新函数: 我只是想知道是否可以重新定义类的方法,以便的新实例将使用新方法。 问题答案: 以后可以重新定义类的

  • 问题内容: 我有一个需要样式的HTML选择框。我宁愿只使用CSS,但是如果需要的话,我将使用jQuery填补空白。 谁能推荐一个好的教程或插件? 我知道,Google,但是我一直在搜索过去两个小时,但找不到符合我需要的内容。 它必须是: 与jQuery 1.3.2兼容 无障碍 不打扰 可以根据样式选择框的各个方面进行完全自定义 有人知道什么可以满足我的需求吗? 问题答案: 我已经看到了一些jQue

  • 问题内容: 无论如何,是否有一个微调器提示与编辑文本字段所提供的提示类似。我知道您可以使用提示给您一个标题栏,但在单击微调器之前,仍将初始微调器字段留为空白。我目前有一种粗略的方法来将虚拟字段设置为旋转器数组的第一部分,即问题,然后在末尾进行检查以确保旋转器不等于问题字符串。有没有更清洁/更好的方法呢? 谢谢! 问题答案: 这是一个比Ravi Vyas代码简单一些的解决方案(感谢您的启发!):