Apache Kafka 和 Spark Streaming
Apache Kafka and Spark Streaming
我正在通读这个博客 post:
它讨论了如何使用 Spark Streaming 和 Apache Kafka 进行一些近乎实时的处理。我完全理解这篇文章。它确实展示了我如何使用 Spark Streaming 从主题中读取消息。我想知道是否有 Spark Streaming API 可用于将消息写入 Kakfa 主题?
我的用例非常简单。我有一组数据,我可以以固定的时间间隔(比如每秒)从给定的来源读取这些数据。我使用反应流来做到这一点。我想使用 Spark 对此数据进行一些分析。我想要容错,所以 Kafka 发挥了作用。所以我基本上要做的是以下内容(如果我错了请纠正我):
- 使用反应流以恒定间隔从外部源获取数据
- 将结果通过管道传输到 Kafka 主题中
- 使用 Spark Streaming,为消费者创建流上下文
- 对消耗的数据进行分析
另一个问题是,Spark 中的 Streaming API 是反应流规范的实现吗?它有背压处理(Spark Streaming v1.5)吗?
- 不,目前 none 的 Spark Streaming 内置接收器 API 是 Reactive Streams 实现的实现。但是有一个 issue for that 你会想要关注。
但 Spark Streaming 1.5 has internal back-pressure-based dynamic throttling. There's some work to extend that beyond throttling 正在筹备中。此节流与 Kafka 直接流 API.
兼容
您可以在 Spark Streaming 应用程序中写入 Kafka,这里是 one example。
(完全披露:我是一些背压工作的 implementers 之一)
如果您必须将结果流写入另一个 Kafka 主题,比如 'topic_x',首先,您必须在结果流中包含名称为 'Key' 和 'Value' 的列您正在尝试写入 topic_x.
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
上的文档
我正在通读这个博客 post:
它讨论了如何使用 Spark Streaming 和 Apache Kafka 进行一些近乎实时的处理。我完全理解这篇文章。它确实展示了我如何使用 Spark Streaming 从主题中读取消息。我想知道是否有 Spark Streaming API 可用于将消息写入 Kakfa 主题?
我的用例非常简单。我有一组数据,我可以以固定的时间间隔(比如每秒)从给定的来源读取这些数据。我使用反应流来做到这一点。我想使用 Spark 对此数据进行一些分析。我想要容错,所以 Kafka 发挥了作用。所以我基本上要做的是以下内容(如果我错了请纠正我):
- 使用反应流以恒定间隔从外部源获取数据
- 将结果通过管道传输到 Kafka 主题中
- 使用 Spark Streaming,为消费者创建流上下文
- 对消耗的数据进行分析
另一个问题是,Spark 中的 Streaming API 是反应流规范的实现吗?它有背压处理(Spark Streaming v1.5)吗?
- 不,目前 none 的 Spark Streaming 内置接收器 API 是 Reactive Streams 实现的实现。但是有一个 issue for that 你会想要关注。
但 Spark Streaming 1.5 has internal back-pressure-based dynamic throttling. There's some work to extend that beyond throttling 正在筹备中。此节流与 Kafka 直接流 API.
兼容
您可以在 Spark Streaming 应用程序中写入 Kafka,这里是 one example。
(完全披露:我是一些背压工作的 implementers 之一)
如果您必须将结果流写入另一个 Kafka 主题,比如 'topic_x',首先,您必须在结果流中包含名称为 'Key' 和 'Value' 的列您正在尝试写入 topic_x.
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
上的文档