当使用增加分区的函数时,似乎会产生空的阶段,调用重新分区时会发生同样的情况,阶段溢出了spark UI,并且我无法跟踪真实阶段,它使得UI无用使用reduceByKey时spark spark会继续产生阶段
我用火花1.1.0使用默认设置
当使用增加分区的函数时,似乎会产生空的阶段,调用重新分区时会发生同样的情况,阶段溢出了spark UI,并且我无法跟踪真实阶段,它使得UI无用使用reduceByKey时spark spark会继续产生阶段
我用火花1.1.0使用默认设置
与火花流要处理的数据流。与例如,你连接它工作在一个批次数据的每个1秒:
JavaStreamingContext ssc = new JavaStreamingContext(sparkConf, Durations.seconds(1));
这意味着每个1秒你有DSTREAM的内部产生一个单独的RDD并执行所有的转化。这会导致您在WebUI中看到许多单独的阶段逐一执行的事实 - 这是在每个单独的输入批次顶部执行的转换
DStream内批处理RDD中创建的分区数量可以计算为batch interval/spark.streaming.blockInterval
其中默认设置会给你每个200毫秒额外的分区。尝试将批处理间隔增加到1分钟或至少30秒,并且您会看到这一点更好 - 几乎您在nc
中输入的每行都会被转换为单独的分区,并且单独的分区会导致调度单独的任务来处理它,这就是为什么一些阶段会有超过1个任务。
你能澄清你的问题吗?您使用哪个Spark版本?提供您使用的代码或至少它的简化版本?你不把舞台和任务混合在一起吗?您使用的流式传输的设置(批处理间隔,spark.streaming.blockInterval,接收器数量)是多少? – 0x0FFF 2015-01-21 10:43:36
我指的是在ui中完成的阶段表而不发送数据到套接字spark继续向表中添加条目 – ran 2015-01-21 11:43:27