Как уменьшить элементы разделов RDD - PullRequest
0 голосов
/ 07 апреля 2019

Я новичок в Spark и пытаюсь работать над улучшенным алгоритмом подсчета слов с использованием разделов RDD.Мой первоначальный RDD подразделяется на K разделов, и с помощью mapPartitionToPair я посчитал количество слов в каждом разделе.вот мой код

Результаты, которые у меня есть, - это слова, и они следуют за количеством в каждом разделе, однако некоторые слова находятся в более чем одном разделе, поэтому в качестве следующего шага я должен собрать каждое слово из всех разделов и суммировать его количество., но я не знаю, какие методы я должен использовать.

Я новичок, поэтому я ценю любые советы, заранее спасибо.

JavaPairRDD<String, Long> wordpairs = docsPartitioned.mapPartitionsToPair( (Iterator<String> iter) -> {
        ArrayList<String> words=  new ArrayList<String>();
        String line=null;
                while (iter.hasNext())
                     line=iter.next();


        String[] tokens = line.split(" ");
        HashMap<String, Long> counts = new HashMap<>();
        ArrayList<Tuple2<String, Long>> pairs = new ArrayList<>();
        for (String token : tokens) {
            counts.put(token, 1L + counts.getOrDefault(token, 0L));
        }
        for (Map.Entry<String, Long> e : counts.entrySet()) {
            pairs.add(new Tuple2<>(e.getKey(), e.getValue()));
        }
        return pairs.iterator();
            });
    wordpairs.reduceByKey((x,y)->x+y);
...