Я использую аккумулятор в функции сгиба.Я хотел бы изменить значение аккумулятора.
Моя функция выглядит примерно так:
public Tuple2<String, Long> fold(Tuple2<String, Long> acc, eventClass event)
{
acc._1 = event.getUser();
acc._2 += event.getOtherThing();
return acc
}
Для меня это должно работать, потому что все, что я делаю, это изменяю значения аккумулятора.Однако, что я получаю, это Cannot assign value to final variable _1
.То же самое для _2
.Почему эти свойства acc
окончательны?Как я могу присвоить им значения?
быстрое редактирование: Вт, что я могу, чтобы ржавчина вернула новый кортеж вместо этого, но, на мой взгляд, это не очень хорошее решение return new Tuple2<String, Long>(event.getUser(), acc._2 + event.getOtherThing());
решение для основы flink: Используйте Tuple2, определенный в flink.Импортируйте его, используя
import org.apache.flink.api.java.tuple.Tuple2;
, а затем используйте его с
acc.f0 = event.getUser();
acc.f1 += event.getByteDiff();
return acc;