如何联接两个KTable并将结果ktable写入状态存储

时间:2018-12-04 15:54:26

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

我有两个KTable对象:

KTable<Long, byte[]> firstTable = builder.table("firstTopic", Consumed.with(Serdes.Long(), Serdes.ByteArray()));

 KTable<Long, byte[]> secondTable = builder.table("secondTopic",
        Consumed.with(Serdes.Long(), Serdes.ByteArray()));

在那之后,我想加入这两个表:

firstTable.leftJoin(secondTable,
            (leftValue, rightValue) -> {
            try {
                return utils.serializeNetwork(utils.deserializeNetwork(leftValue));
            } catch (IOException e) {
                e.printStackTrace();
                return null;
            }
            }
          )

所以我有两个表,并将它们连接到一个表中,并且我希望通过每个键将结果表存储在kafka状态存储中,但是我不知道该怎么做。

1 个答案:

答案 0 :(得分:1)

您可以通过在Materialized上指定leftJoin参数并为状态存储指定名称来强制实现到本地存储。

firstTable.leftJoin(..., Materialized.as("my-store-name"));