【问题标题】:Apache Kafka and Spark StreamingApache Kafka 和 Spark 流式传输
【发布时间】:2015-12-12 10:54:56
【问题描述】:

我正在阅读这篇博文:

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)?

【问题讨论】:

    标签: apache-spark apache-kafka spark-streaming reactive-programming spark-streaming-kafka


    【解决方案1】:

    如果您必须将结果流写入另一个 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的文档

    【讨论】:

      【解决方案2】:
      1. 不,目前,Spark Streaming 的内置接收器 API 都不是 Reactive Streams 实现的实现。但是有一个 issue for that 你会想要关注。
      2. 但是 Spark Streaming 1.5 has internal back-pressure-based dynamic throttling。有一些work to extend that beyond throttling 正在筹备中。这种限制与 Kafka 直接流 API 兼容。

      3. 您可以在 Spark Streaming 应用程序中写入 Kafka,这里是 one example

      (完全披露:我是一些背压工作的implementers 之一)

      【讨论】:

      • 作为实施者,我有一个关于背压功能的问题:我正在启用背压,但对系统没有影响。我正在处理来自我的源的相当大的数据项,吞吐量约为 40 项/秒。我已经修复了 maxRate ,否则延迟时间会继续增长并且永远不会停止。背压似乎适用于处理数据速率约为 15000 条推文/秒的推文......
      猜你喜欢
      • 2016-06-21
      • 1970-01-01
      • 2015-08-22
      • 1970-01-01
      • 1970-01-01
      • 2019-05-19
      • 2018-06-25
      • 2016-03-17
      • 1970-01-01
      相关资源
      最近更新 更多