加入两个卡夫卡流

时间:2018-05-24 14:03:35

标签: apache-kafka kafka-consumer-api kafka-producer-api apache-kafka-streams apache-kafka-connect

试图加入两个Kstream但我收到的类型不匹配错误是代码片段。

val viewHolder = my_view_group.create<MyViewHolder>(R.layout.my_layout)

出现的错误是类型不匹配:无法从String转换为R 这是加入kstream KStream<String, String> longCounts = netExpence.join(netIncome, (key1, key2) -> key1 + "/" + key2, JoinWindows.of(joinWindowSizeMs).until(windowRetentionTimeMs),stringSerde, stringSerde, stringSerde);

的语法

请解释join(KStream<K,VO> otherStream, ValueJoiner<? super V,? super VO,? extends VR> joiner, JoinWindows windows, Joined<K,V,VO> joined)究竟是什么。谢谢

1 个答案:

答案 0 :(得分:1)

使用匹配记录的两个值调用ValueJoiner并发出连接结果值。

// key type must be the same for a join
// value type can be different
KStream<KeyType, ValueType1> stream1 = ...
KStream<KeyType, ValueType2> stream2 = ...

KStream<KeyType, OutputType> joined = stream1.join(stream2, ...);

因此,ValueJoiner必须ValueType1作为第一个通用(? super V),ValueType2作为第二个通用(? super VO)。对于第三个通用(? extend VR),您可以指定输出类型(即上例中的OutputType)。

<强>更新

您还需要为运行时配置正确的Serdes。如果所有类型都相同,则最好通过StreamsConfig为键和/或值设置默认serdes。否则,您可以覆盖每个运算符的默认Serdes: