Apache Kafka和Spark Streaming

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从Topic中读取消息。那么,是否有一个Spark Streaming API可以用于将消息写入Kakfa topic呢?
我的用例非常简单。我有一组数据可以按恒定间隔(例如每秒)从给定来源读取。我使用响应式流实现这一点。我想使用Spark对这些数据进行一些分析。我希望具有容错性,因此需要使用Kafka。因此,我要执行以下操作(如果我理解错误请纠正我):
1. 使用响应式流从外部源获取数据。 2. 将结果导入Kafka Topic。 3. 使用Spark Streaming为消费者创建流上下文。 4. 对已消费的数据执行分析。
还有一个问题,Spark中的Streaming API是响应式流规范的实现吗?它是否具有反压处理(Spark Streaming v1.5)?
2个回答

6

我作为实现者有一个关于背压特性的问题想要问你: 我启用了背压,但对系统没有影响。我正在处理相当大的数据项,从我的源头每秒吞吐量约为40个项目。我已经修复了maxRate,否则延迟时间会继续增长而永远不会停止。背压似乎在处理推文时起作用,其中数据速率约为15000条/秒... - chAlexey

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接