Apache Kafka Streams中特定分区的聚合

时间:2016-08-17 07:09:28

标签: apache-kafka-streams

假设我有一个名为SensorData1Hour的Kafka主题,两个传感器S1和S2将数据(时间戳和值)发送到两个不同的分区,例如S1-> P1和S2 - > P2。现在我需要分别聚合这两个传感器的值,假设在1小时的时间窗口内计算平均传感器值并将其写入新主题KStreamBuilder#stream。使用此方案

  1. 如何使用 $('#svgcanvas').each(function() { $.each(this.attributes, function() { // this.attributes is not a plain object, but an array // of attribute nodes, which contain both the name and value console.log(this.name, this.value); } }); }); 方法选择特定的主题分区?
  2. 是否可以在同一主题的两个(多个)不同分区上应用某些聚合功能?

1 个答案:

答案 0 :(得分:5)

您不能(直接)访问单个分区,也不能(直接)在多个分区上应用聚合功能。

汇总始终按keyhttp://docs.confluent.io/current/streams/developer-guide.html#stateful-transformations

完成
  1. 因此,您可以为每个分区使用不同的密钥,而不是按密钥聚合。请参阅http://docs.confluent.io/current/streams/developer-guide.html#windowing-a-stream
  2. 最简单的方法是让每个制作人立即为每条消息应用一个密钥。

    1. 如果要聚合多个分区,首先需要设置一个新密钥(例如,使用selectKey())并为要聚合的所有数据设置相同的密钥(如果要聚合所有分区,你会使用一个键值 - 但是,请记住,这可能很快成为瓶颈!)。