我有一个用于Spark的Java代码:
SparkConf sparkConf = new SparkConf().set("spark.scheduler.mode", "FAIR");
JavaSparkContext sc = new JavaSparkContext("local","MyAppName", sparkConf);
JavaPairRDD<String, String> wholeTextFiles1 = sc.wholeTextFiles("/path1/*");
JavaPairRDD<String, String> wholeTextFiles2 = sc.wholeTextFiles("/path2/*");
JavaFutureAction<Void> voidJavaFutureAction = wholeTextFiles1.foreachAsync(new VoidFunction<Tuple2<String, String>>() {
public void call(Tuple2<String, String> stringStringTuple2) throws Exception {
//do something
}
});
JavaFutureAction<Void> voidJavaFutureAction1 = wholeTextFiles2.foreachAsync(new VoidFunction<Tuple2<String, String>>() {
public void call(Tuple2<String, String> stringStringTuple2) throws Exception {
//do something
}
});
voidJavaFutureAction.get();
voidJavaFutureAction1.get();有两个foreachAsync操作。我在等待火花在同一时间做两个不同的动作。但是在星火应用程序UI中,我看到了两个阶段,但其中一个阶段等待开始,直到另一个阶段完成。我在等待两个不同的阶段同时工作,我错了吗?foreachAsync是如何工作的?
发布于 2017-09-21 11:56:37
foreachAsync是如何工作的?
您正确地理解了,但是应该将调度程序配置为使用此功能。
val conf = new SparkConf().
...
.set("spark.scheduler.mode", "FAIR")请参阅https://spark.apache.org/docs/latest/job-scheduling.html#scheduling-within-an-application
默认情况下,Spark的调度程序以FIFO的方式运行作业。
更新
检查是否正确设置属性https://spark.apache.org/docs/latest/configuration.html#viewing-spark-properties。配置池- http://spark.apache.org/docs/latest/job-scheduling.html#configuring-pool-properties
我看到了两个阶段
它是关于工作/任务的。公平模式需要并行作业/任务,可以并行化。阶段有依赖关系,因此它们应该按顺序执行。请参阅https://jaceklaskowski.gitbooks.io/mastering-apache-spark/spark-dagscheduler.html
你能给我看看你的DAG吗?
https://stackoverflow.com/questions/46341261
复制相似问题