Apache kafka Kafka流-按客户端id筛选

Apache kafka Kafka流-按客户端id筛选,apache-kafka,stream,ksqldb,ktable,Apache Kafka,Stream,Ksqldb,Ktable,我正在使用Kafka Stream创建一个只包含特定于客户端id的数据的ktable,该id不是主题键。我对Kafka Streams还不熟悉,它看起来很简单,但我对社区中提供的很多非常好的例子有点困惑 我正在尝试获取客户端id为0123456的inputTopic数据。在KSQL中,以下命令类似于命令: CREATE STREAM TOPIC1_CLIENT1 AS SELECT * FROM TOPIC1 WHERE client_id= '0123456' EMIT CHANGES; 下

我正在使用Kafka Stream创建一个只包含特定于客户端id的数据的ktable,该id不是主题键。我对Kafka Streams还不熟悉,它看起来很简单,但我对社区中提供的很多非常好的例子有点困惑

我正在尝试获取客户端id为0123456的inputTopic数据。在KSQL中,以下命令类似于命令:

CREATE STREAM TOPIC1_CLIENT1 AS
SELECT * FROM TOPIC1
WHERE client_id= '0123456'
EMIT CHANGES;
下面我试图重现同样的行为。有人能告诉我下面我做错了什么吗?它不像我想象的那样过滤

        final KStream<String, String> stream = builder.stream(inputTopic, Consumed.with(stringSerde, stringSerde));
        final KTable<String, String> convertedTable = stream.filter((client_id,v) -> v.equals("0123456")).toTable(Materialized.as("stream-converted-to-table"));
        stream.to(streamsOutputTopic, Produced.with(stringSerde, stringSerde));
        convertedTable.toStream().to(tableOutputTopic, Produced.with(stringSerde, stringSerde));
final KStream stream=builder.stream(inputTopic,Consumed.with(stringSerde,stringSerde));
final KTable convertedTable=stream.filter((client_id,v)->v.equals(“0123456”)).toTable(具体化的.as(“stream converted to table”);
stream.to(streamsOutputTopic,producted.with(stringSerde,stringSerde));
convertedTable.toStream().to(tableOutputTopic,producted.with(stringSerde,stringSerde));

v
是消息的全部值。为了在KSQL中命名字段,流上有一个关联的模式,例如,数据是JSON还是Avro,这意味着clientid只是值的一部分

,所以我只缺少在流中创建和关联模式的功能?谢谢你看这个。如果是的话,你能让我看一些医生吗。关于它?卡夫卡流没有模式。问题是您使用的是字符串序列。我不知道您的源数据格式是什么,但是假设您有一个像
{“client_id”:123}
这样的记录,那么整个字符串当然不会等于123。。。您可以参考streams上的Apache或Confluent网站