Я новичок в 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);