代码之家  ›  专栏  ›  技术社区  ›  samthebest Ende Neu

卡夫卡流有没有像火花一样的蓄能器?

  •  0
  • samthebest Ende Neu  · 技术社区  · 6 年前

    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、直方图、计数、计时等)

    到目前为止,我找不到任何类似的卡夫卡流。有什么存在吗?我想这至少对卡夫卡应用程序的每个实例都是可能的,但要在多个实例上实现这一点,需要创建一个中间主题。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Matthias J. Sax    6 年前

    Kafka Streams通过设计避免了并发——如果累积的数据不需要容错,那么可以在内存中进行,并通过一个挂钟时间标点将其清除。

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

    这将给你任务级的积累。不确定Spark的累加器是如何工作的,但是如果它提供了一个“全局”视图,我假设它需要通过网络发送数据,并且一个实例只能访问数据(或者可能是广播—不确定如何保证广播情况下的一致性)。类似地,您可以将数据发送到一个主题(具有1个分区),以便将所有数据全局收集到一个地方。