тогда основной поток будет ждать завершения будущего.

у код для искры в Java. Когда я использую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
        }
    });

Это возвращает ошибку. Где я не прав?

Ответы на вопрос(1)

Решение Вопроса

foreachAsync возвращает объект Future, и когда вы покидаете функцию, контекст spark закрывается (поскольку он создается локально).

Если вы позвонитеget() наforeachAsync() тогда основной поток будет ждать завершения будущего.

Ваш ответ на вопрос