kafka流到ktable加入

时间:2018-10-29 05:17:46

标签: apache-kafka apache-kafka-streams ksql

我正在尝试加入

  • KStream:从一个主题创建,该主题具有JSON值。我使用重新加密流 从值两个属性。示例值(json的片段)。我创建了一个自定义pojo类,并使用了一个自定义serdes。{"value":"0","time":1.540753118800291E9,,"deviceIp":"111.111.111.111","deviceName":"KYZ1","indicatorName":"ifHCInOctets"}

键被映射为:

map((key, value) -> KeyValue.pair(value.deviceName+value.indicatorName, value))

我对KStream进行了窥视,并同时打印了两个密钥    以及我使用的属性 看起来都很好。

  • KTable:我从一个主题创建一个ktable,我正在使用python脚本写入该主题,该主题的键为KYZ1ifHCInOctets,即设备名称和指标名称的组合(从上方)。 我做 toStream,然后浏览生成的流。键和值都似乎 很好。

现在,当我进行内部联接并进行窥视或直通主题时,我看到键和值不匹配。加入似乎无效,

  KStream<String, MyPojoClass> joined= datastream.join(table, 
          (data,table)->data
          ,Joined.with(Serdes.String(),myCustomSerde,Serdes.String())
          );

key = XYZ1s1_TotalDiscards
Value = {"deviceName":"ABC2", "indicatorName":"jnxCosQstatTxedBytes"}

我在使用ksql时有完全相同的东西,但是想做自己的流应用程序。

1 个答案:

答案 0 :(得分:0)

现在,对于错误的根源听起来太愚蠢了,我的PoJo类几乎没有静态的属性:-(,这导致了错误的键。