Есть ли способ обновить RDD внутри лямбда-функции - PullRequest
0 голосов
/ 04 апреля 2019

Мне нужно найти количество слов, чтобы оно отличалось от предыдущего пакета для определенных слов.

Пример. Мне нужно найти количество слов из потоковых данных.Слова, количество которых нужно найти, равно (test,jack) Если в моей первой партии есть слова (test 5),(kite 2),(jack 3),(pen 5) во второй партии есть данные (test 2),(jack 1),(kite 1),(pen 1), вывод второй партии должен быть следующим: (test 3),(jack 2) //test(5-3) and jack(2-1)

..........

JavaPairRDD<String, Integer> initialRDD=jsc.sparkContext().parallelizePairs(tuples1);
 JavaPairDStream<String,Integer> joinedDstream= pairstream.transformToPair(new Function<JavaPairRDD<String, Integer>, JavaPairRDD<String, Integer>>() {
           @Override
           public JavaPairRDD<String, Integer> call(JavaPairRDD<String, Integer> v1) throws Exception {

               JavaPairRDD<String, Integer> modRDD  = v1.join(initialRDD).mapToPair(new PairFunction<Tuple2<String, Tuple2<Integer, Integer>>, String, Integer>() {
                   @Override
                   public Tuple2<String, Integer> call(Tuple2<String, Tuple2<Integer, Integer>> stringTuple2Tuple2) throws Exception {
                       return new Tuple2<>(stringTuple2Tuple2._1(), (stringTuple2Tuple2._2()._2 - stringTuple2Tuple2._2()._2));
                   }
               });
               return modRDD;      
initialRDD=modRDD.  //how to do this as lambda expressions only allow final variable.              
expressions require final variable.
           }
       });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...