Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何加入卡夫卡的两条流?_Java_Apache Kafka_Apache Kafka Streams - Fatal编程技术网

Java 如何加入卡夫卡的两条流?

Java 如何加入卡夫卡的两条流?,java,apache-kafka,apache-kafka-streams,Java,Apache Kafka,Apache Kafka Streams,学习卡夫卡流,尝试在5分钟的窗口内连接两个流(Json值)。我的理解是使用相同的键来匹配连接条件。如果我的理解是正确的,像钥匙一样只能加入,对吗?如果是这样,我如何加入json值。也就是说,Stream1:Key=a,value={a,b,c}。Stream2:Key=a,value={x}和Key=a,value={y}。预期o/p:{a,b,c,x}和{a,b,c,y}。 要实现这一点,我的ValueJoiner应该是什么样子。帮我做这个。我的示例代码: KStream<String,

学习卡夫卡流,尝试在5分钟的窗口内连接两个流(Json值)。我的理解是使用相同的键来匹配连接条件。如果我的理解是正确的,像钥匙一样只能加入,对吗?如果是这样,我如何加入json值。也就是说,
Stream1:Key=a,value={a,b,c}。Stream2:Key=a,value={x}和Key=a,value={y}。预期o/p:{a,b,c,x}和{a,b,c,y}。

要实现这一点,我的ValueJoiner应该是什么样子。帮我做这个。我的示例代码:

KStream<String, JsonNode> resultStream = stream1.leftJoin(stream2,
                new ValueJoiner<JsonNode, JsonNode, JsonNode>() {
                    @Override
                    public JsonNode apply(JsonNode value1, JsonNode value2) {
                        if (value1 != null && value2 != null) {


                            return value1;
                        }
                        return null;
                    }
                }, JoinWindows.of(TimeUnit.SECONDS.toMillis(20)), Joined.with(Serdes.String(), /* key */
                        jsonSerde, /* left value */
                        jsonSerde) /* right value */
        );
KStream resultStream=stream1.leftJoin(stream2,
新估价师(){
@凌驾
公共JsonNode应用(JsonNode值1、JsonNode值2){
if(value1!=null&&value2!=null){
返回值1;
}
返回null;
}
},JoinWindows.of(TimeUnit.SECONDS.toMillis(20)),join.with(Serdes.String(),/*键*/
jsonSerde,/*左值*/
jsonSerde)/*正确值*/
);

您对联接如何工作的理解是正确的(假设记录时间戳小于联接窗口大小)


要操作JsonNodes,只需搜索互联网:

以获得澄清,“Confluent Kafka”与Apache KafkaWorks没有什么不同,就像宝石一样,谢谢