Kafka Streams是否有类似Accumulator的Spark?

时间:2018-09-22 10:43:04

标签: java scala apache-spark apache-kafka apache-kafka-streams

Spark有一个有用的API,用于以线程安全的方式https://spark.apache.org/docs/2.3.0/api/scala/index.html#org.apache.spark.util.AccumulatorV2来累积数据,并附带了一些现成的有用的累加器,例如:多头https://spark.apache.org/docs/2.3.0/api/scala/index.html#org.apache.spark.util.LongAccumulator

我通常使用蓄电池在Spark作业的调试,配置文件,监视和诊断中进行接线。我通常会在执行Spark作业之前触发Future来定期打印统计信息(例如TPS,直方图,计数,计时等)

到目前为止,我找不到与Kafka Streams类似的东西。有什么东西吗?我想至少对于Kafka应用程序的每个实例都是可行的,但是要在多个实例之间进行这项工作,则需要创建一个中间主题。

1 个答案:

答案 0 :(得分:1)

Kafka Streams通过设计避免了并发-如果累积的内容不需要容错,则可以在内存中进行处理,并通过墙上的时间标点将其清除。

如果需要容错,则可以使用状态存储并按标点符号扫描整个存储以将其清除。

这将为您提供任务级别的积累。不知道Spark的累加器如何详细工作,但是如果它给您一个“全局”视图,我认为它需要通过网络发送数据,并且一个实例仅可以访问数据(或者可以广播)当然,如何保证广播情况的一致性)。类似地,您可以将数据发送到一个主题(具有1个分区),以将所有数据全局地收集到一个地方。