KTable-KStream LeftJoin影响性能。有什么警示吗

时间:2019-11-30 14:07:14

标签: apache-kafka apache-kafka-streams ktable

我有一个用例,其中我收到有关某个主题的推文,而有关其他主题的用户详细信息。我需要从用户详细信息中找到用户名,并将其设置为tweets。 使用以下代码,我可以获得预期的结果。

KStream<String, Tweet> tweetStream = builder
                .stream("tweet-topic",
                        Consumed.with(Serdes.String(),
                                serdeProvider.getTweetSerde()));

        KTable<String, User> userTable = builder.table("user-topic",
                Consumed.with(Serdes.String(),
                        serdeProvider.getUserSerde()));

        KStream<String, Tweet> finalStream = tweetStream.leftJoin(userTable, (tweetDetail, userDetail) -> {
            if (userDetail != null) {
                return tweetDetail.setUserName(userDetail.getName());
            }
            return tweetDetail;
        }, Joined.with(Serdes.String(), serdeProvider.getTweetSerde(),
                serdeProvider.getUserSerde()));

但是,如果kTable主题中有1000条记录,要处理100万条记录,此逻辑将花费2小时以上的时间,而之前则需要2到3分钟。

以前,当用户详细信息位于本地哈希图中时,过去通常需要10分钟来处理所有数据。 还有其他方法可以避免LeftJoin或提高其性能吗?

0 个答案:

没有答案