Реализация компаратора для JavaRDD.top с лямбда-исключениями: org.apache.spark.SparkException: задача не сериализуема - PullRequest
0 голосов
/ 27 октября 2018

Я пытаюсь взять 25 верхних элементов из JavaPairRDD следующим образом:

JavaPairRDD rdd = ...;
List<Tuple2<String, Long>> top25 = rdd.top(25, (t1, t2) -> {
                                        if (!t1._2.equals(t2._2)) {
                                            return -1 * Long.compare(t1._2, t2._2);
                                        }
                                        else {
                                            return t1._1.compareTo(t2._1);
                                        }
                                    })

Это сортировка на основе сначала значения и, если значения равны, то по ключам.Когда я запускаю его, я получаю следующее исключение:

Exception in thread "main" org.apache.spark.SparkException: Task not serializable

Мне кажется, проблема в том, что встроенная лямбда-функция, играющая роль Comparator, не сериализуема.

У меня естьполучил два вопроса.Во-первых, если мое предположение верно, почему Comparator должен быть сериализуемым?И второе, как решить эту проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...