4

我正在阅读这篇博文:

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

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

我的用例非常简单。我有一组数据,我可以以恒定的时间间隔(比如每秒)从给定的源读取这些数据。我使用反应流来做到这一点。我想使用 Spark 对这些数据进行一些分析。我想要容错,所以 Kafka 发挥作用。所以我基本上要做的是以下(如果我错了请纠正我):

  1. 使用反应流以恒定的时间间隔从外部源获取数据
  2. 将结果通过管道传输到 Kafka 主题中
  3. 使用 Spark Streaming,为消费者创建流上下文
  4. 对消耗的数据执行分析

另一个问题是,Spark 中的 Streaming API 是响应式流规范的实现吗?它是否具有背压处理(Spark Streaming v1.5)?

4

2 回答 2

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

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

(全面披露:我是一些背压工作的实施者之一)

于 2015-10-26T15:57:59.553 回答
0

如果您必须将结果流写入另一个 Kafka 主题,比如说“topic_x”,首先,您必须在尝试写入 topic_x 的结果流中有名为“Key”和“Value”的列。

result_stream = result_stream.selectExpr('CAST (key AS STRING)','CAST (value AS STRING)')
kafkaOutput = result_stream \
               .writeStream \
               .format('kafka') \
               .option('kafka.bootstrap.servers','192.X.X.X:9092') \
               .option('topic','topic_x') \
               .option('checkpointLocation','./resultCheckpoint') \
               .start()

kafkaOutput.awaitTermination()

有关更多详细信息,请查看https://spark.apache.org/docs/2.4.1/structured-streaming-kafka-integration.html上的文档

于 2019-04-15T11:36:34.477 回答