我的工作流程如下:
rdd1 = sc.textFile(input);
rdd2 = rdd1.filter(filterfunc1);
rdd3 = rdd1.filter(fiterfunc2);
rdd4 = rdd2.map(mapptrans1);
rdd5 = rdd3.map(maptrans2);
rdd6 = rdd4.union(rdd5);
rdd6.foreach(some transformation);
1.我是否需要坚持使用rdd1?或者它不是必需的,因为在rdd6只有一个动作只能创建一个作业,而且在一个作业中不需要持久化?
2.如果rdd2上的转换是reduceByKey而不是map,那该怎么办?从单一工作开始,这又是否同样不需要坚持。
答案 0 :(得分:0)
如果您计划在多个操作中重复使用RDD,则只需要保留。在单个动作中,spark可以很好地决定何时重新计算以及何时重用。
您可以在UI中看到DAG,以确保rdd1仅从文件中读取一次。