Apache Spark - redubyKey - Java -
Я пытаюсь понять работуreduceByKey
в Spark, используя Java в качестве языка программирования.
Скажем, у меня есть предложение «Я тот, кто я есть». Я разбиваю предложение на слова и сохраняю его как список[I, am, who, I, am]
.
Теперь эта функция назначает1
к каждому слову:
JavaPairRDD<String, Integer> ones = words.mapToPair(new PairFunction<String, String, Integer>() {
@Override
public Tuple2<String, Integer> call(String s) {
return new Tuple2<String, Integer>(s, 1);
}
});
Таким образом, результат выглядит примерно так:
(I,1)
(am,1)
(who,1)
(I,1)
(am,1)
Теперь, если у меня работает 3 редуктора, каждый редуктор получит ключ и значения, связанные с этим ключом:
reducer 1:
(I,1)
(I,1)
reducer 2:
(am,1)
(am,1)
reducer 3:
(who,1)
Я хотел знать
а. Что именно происходит здесь в функции ниже.
б. Какие параметрыnew Function2<Integer, Integer, Integer>
с. В основном, как формируется JavaPairRDD.
JavaPairRDD<String, Integer> counts = ones.reduceByKey(new Function2<Integer, Integer, Integer>() {
@Override
public Integer call(Integer i1, Integer i2) {
return i1 + i2;
}
});