Apache spark Spark异步作业因错误而失败
我正在用java为spark编写代码。当我使用Apache spark Spark异步作业因错误而失败,apache-spark,asynchronous,spark-submit,Apache Spark,Asynchronous,Spark Submit,我正在用java为spark编写代码。当我使用foreachAsyncspark时失败,并给出java.lang.IllegalStateException:无法对停止的SparkContext调用方法。 在此代码中: JavaSparkContext sparkContext = new JavaSparkContext("local","MyAppName"); JavaPairRDD<String, String> wholeTextFiles = sparkConte
foreachAsync
spark时失败,并给出java.lang.IllegalStateException:无法对停止的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
}
});
JavaSparkContext-sparkContext=newjavasparkcontext(“local”,“MyAppName”);
javapairdd wholeTextFiles=sparkContext.wholeTextFiles(“somePath”);
foreach(新的VoidFunction(){
公共void调用(Tuple2 StringTuple2)引发异常{
//做点什么
}
});
它很好用。但在这部法典中:
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
}
});
JavaSparkContext-sparkContext=newjavasparkcontext(“local”,“MyAppName”);
javapairdd wholeTextFiles=sparkContext.wholeTextFiles(“somePath”);
foreachAsync(新的VoidFunction(){
公共void调用(Tuple2 StringTuple2)引发异常{
//做点什么
}
});
它返回错误。我错在哪里?这是因为
foreachAsync
返回一个未来的对象,当您离开一个函数时,spark上下文被关闭(因为它是在本地创建的)
如果在foreachAsync()
上调用get()
,则主线程将等待将来完成