使用reduceByKey时,spark streaming保持生成阶段

时间:2015-01-21 10:08:24

标签: apache-spark spark-streaming

当使用增加分区的功能时,似乎生成空的阶段,调用重新分区时会发生相同的事情,阶段溢出了火花UI,我无法跟踪真实的阶段,这使得UI无用

我从单词计数示例中得到了相同的行为 https://github.com/apache/spark/blob/master/examples/src/main/java/org/apache/spark/examples/streaming/JavaNetworkWordCount.java

我使用带有默认设置的spark 1.1.0

1 个答案:

答案 0 :(得分:1)

使用Spark Streaming,您正在处理数据流。使用您附加的示例,它每1秒钟处理一批数据:

JavaStreamingContext ssc = new JavaStreamingContext(sparkConf, Durations.seconds(1));

这意味着每1秒钟您在DStream中创建一个单独的RDD并执行所有转换。这导致您在WebUI中看到许多单独的阶段逐个执行 - 这是在每个单独的输入批处理之上执行的转换

在DStream中的批处理RDD中创建的分区数量可以计算为batch interval / spark.streaming.blockInterval,默认设置将为您提供每200毫秒1个额外分区。尝试将批处理间隔增加到1分钟或至少30秒,您会看到更好 - 几乎您在nc中输入的每一行都将转换为单独的分区,而单独的分区会导致单独任务的调度处理它,这就是为什么有些阶段会有超过1个任务。

相关问题