Почему я получаю циклические ссылки с атрибутами Geometry в классе Bean внутри Encoder (Spark - Java)? - PullRequest
0 голосов
/ 08 мая 2019

Я получаю следующее исключение:

java.lang.UnsupportedOperationException: не может иметь циклический ссылки в классе бина, но получили круговую ссылку класса класс org.locationtech.jts.geom.Geometry

с использованием Encoders.bean (MyBean), где MyBean - это следующий класс:

package mypackage;

import java.io.Serializable;
import java.util.Date;

import org.locationtech.jts.geom.LineString;
import org.locationtech.jts.geom.Point;

public class MyBean implements Serializable{

    private static final long serialVersionUID = 3774077116575410321L;

    private String uuid;
    private Date atr1;
    private LineString myLine;
    private Point point1;
    private Point point2;
    private Double attr2;

    ...
    other attributes
    ...

    ...
    getters and setters
    ...
}

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

...initial code...
//dataset1 is a KeyValueGroupedDataset.
Dataset<MyBean> res = dataset1.flatMapGroups(new FlatMapGroupsFunction<String, AnotherBean, MyBean>() {

private static final long serialVersionUID = 8000298831286293185L;

@Override
public Iterator<MyBean> call(String key, Iterator<AnotherBean> values) throws Exception {
...calculations...
return something.iterator();
}

}, Encoders.bean(MyBean.class));

Я уверен, что исключение связано с атрибутами Geometry внутри MyBean, потому что, если я их удаляю, у меня больше не будет этой проблемы. Однако с ними было бы удобнее.

...