Spark 异步作业因错误而失败
Spark asynchronous job fails with error
我正在 java 中为 spark 编写代码。当我使用 foreachAsync
火花失败并给我 java.lang.IllegalStateException: Cannot call methods on a stopped SparkContext.
在此代码中:
JavaSparkContext sparkContext = new JavaSparkContext("local","MyAppName");
JavaPairRDD<String, String> wholeTextFiles = sparkContext.wholeTextFiles("somePath");
wholeTextFiles.foreach(new VoidFunction<Tuple2<String, String>>() {
public void call(Tuple2<String, String> stringStringTuple2) throws Exception {
//do something
}
});
它工作正常。但是在这段代码中:
JavaSparkContext sparkContext = new JavaSparkContext("local","MyAppName");
JavaPairRDD<String, String> wholeTextFiles = sparkContext.wholeTextFiles("somePath");
wholeTextFiles.foreachAsync(new VoidFunction<Tuple2<String, String>>() {
public void call(Tuple2<String, String> stringStringTuple2) throws Exception {
//do something
}
});
它returns错误。我哪里错了?
这是因为 foreachAsync
returns 一个 Future 对象,当你离开一个函数时,spark 上下文关闭(因为它是在本地创建的)。
如果您在 foreachAsync()
上调用 get()
,那么主线程将等待 Future 完成。
我正在 java 中为 spark 编写代码。当我使用 foreachAsync
火花失败并给我 java.lang.IllegalStateException: Cannot call methods on a stopped SparkContext.
在此代码中:
JavaSparkContext sparkContext = new JavaSparkContext("local","MyAppName");
JavaPairRDD<String, String> wholeTextFiles = sparkContext.wholeTextFiles("somePath");
wholeTextFiles.foreach(new VoidFunction<Tuple2<String, String>>() {
public void call(Tuple2<String, String> stringStringTuple2) throws Exception {
//do something
}
});
它工作正常。但是在这段代码中:
JavaSparkContext sparkContext = new JavaSparkContext("local","MyAppName");
JavaPairRDD<String, String> wholeTextFiles = sparkContext.wholeTextFiles("somePath");
wholeTextFiles.foreachAsync(new VoidFunction<Tuple2<String, String>>() {
public void call(Tuple2<String, String> stringStringTuple2) throws Exception {
//do something
}
});
它returns错误。我哪里错了?
这是因为 foreachAsync
returns 一个 Future 对象,当你离开一个函数时,spark 上下文关闭(因为它是在本地创建的)。
如果您在 foreachAsync()
上调用 get()
,那么主线程将等待 Future 完成。