MAPREDUCE服务 MRS-Streaming任务打印两次相同DAG日志:回答
回答
该应用程序中使用了DStream中的print算子来显示结果,该算子会调用RDD中的take算子来实现底层的计算。
Take算子会以Partition为单位多次触发计算。
在该问题中,由于Shuffle操作,导致take算子默认有两个Partition,Spark首先计算第一个Partition,但由于没有数据输入,导致获取结果不足10个,从而触发第二次计算,因此会出现RDD的DAG结构打印两次的现象。
在代码中将print算子修改为foreach(collect),该问题则不会出现。