当使用增加分区的功能时,似乎生成空的阶段,调用重新分区时会发生相同的事情,阶段溢出了火花UI,我无法跟踪真实的阶段,这使得UI无用
我从单词计数示例中得到了相同的行为 https://github.com/apache/spark/blob/master/examples/src/main/java/org/apache/spark/examples/streaming/JavaNetworkWordCount.java
我使用带有默认设置的spark 1.1.0
答案 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个任务。