Apache Kafka和Spark流

spa*_*rkr 3 reactive-programming apache-kafka apache-spark spark-streaming spark-streaming-kafka

我正在阅读这篇博客文章:

http://blog.jaceklaskowski.pl/2015/07/20/real-time-data-processing-using-apache-kafka-and-spark-streaming.html

它讨论了有关使用Spark Streaming和Apache Kafka进行一些近实时处理的问题。我完全理解这篇文章。它确实显示了如何使用Spark Streaming从主题读取消息。我想知道是否有一个Spark Streaming API,可用于将消息写入Kakfa主题?

我的用例非常简单。我有一组数据,可以以固定的时间间隔(例如每秒)从给定的源读取数据。我使用反应式流进行此操作。我想使用Spark对这些数据进行一些分析。我想要容错,所以卡夫卡开始发挥作用。因此,我基本上要做的是以下操作(如果我输入错了,请纠正我):

  1. 使用反应流以固定间隔从外部源获取数据
  2. 将结果传递给Kafka主题
  3. 使用Spark Streaming为消费者创建流上下文
  4. 对消耗的数据执行分析

但是,另一个问题是,Spark中的Streaming API是否是反应式流规范的实现?是否具有反压处理功能(Spark Streaming v1.5)?

hui*_*ker 5

  1. 不,目前,Spark Streaming的内置接收器API都不是Reactive Streams实现的实现。但是有一个问题您需要遵循。
  2. 但是Spark Streaming 1.5 具有基于内部背压的动态节流功能。有一些工作可以将其扩展到管道之外。该限制与Kafka直接流API兼容。

  3. 您可以在Spark Streaming应用程序中向Kafka进行写,这是一个示例

(完全公开:我是某些背压工作的实施者之一)