#java #apache-spark #dataset
#java #apache-spark #набор данных
Вопрос:
Это мой набор данных,
Name Group Age
A [123] 10
B. [123,456] 20
C. [456,789] 30
D. [900] 40
E. [800,900] 50
F. [1000] 60
Теперь я хочу объединить Group
так, чтобы результат выглядел так
Name Group Age
A,B,C [123,456,789] 10,20,30
D,E [900,800] 40,50
F. [1000] 60
Я пробовал содержать массивы, но это не дает мне того, что я хочу. Я тоже попробовал присоединиться. Любой может помочь с решением Java.
Редактировать:
Я нашел ReduceFunction, которая может сделать что-то подобное.
dataset.reduce(new ReduceFunction<Grouped>(){
private static final long serialVersionUID = 8289076985320745158L;
@Override
public Grouped call(final Grouped v1, final Grouped v2) {
if (!Collections.disjoint(v1.getGroup(), (v2.getGroup())))
{
v1.getAge().addAll(v2.getAge());
v1.getGroup().addAll(v2.getGroup());
v1.getName().addAll(v2.getName());
}
}
}
Но как это сделать для всех строк???
Это может дать мне первые 2 строки, уменьшенные до :
Name Group Age
A,B [123,456] 10,20
Комментарии:
1. проще в scala. это вариант, из которого вы можете клонировать?
2. я нашел решение scala, но я не могу преобразовать его в java. 🙁
3. Я советую пропустить java с помощью spark
4. не могли бы вы предоставить имеющееся у вас решение scala. Я могу попробовать
5. Ok скоро даст ему aburl