Невозможно собрать набор искровых данных в виде списка или карты без соответствующей ошибки конструктора - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть класс

@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class Store {

    private Double probability;

    private String store;

}

и json file

{"probability":"0.26","store":"abc/s3"}
{"probability":"0.57","store":"abc/s1"}

Я пытаюсь прочитать его как набор данных и преобразовать в карту. Чтение набора данных прошло успешно и может работать с ним с помощью команд spark sql, а также просматривать набор данных с помощью show () и т. Д. c

Dataset<Store> ds = ss.read().json(path).as(Encoders.bean(Store.class));
Map<String, Double> storeMap = ds.collectAsList().stream()
                .collect(Collectors.toMap(Store::getStore, Store::getProbability));

Но преобразование в карту завершается с ошибкой. Эта ошибка связана с самой командой ds.collectAsList ()

No applicable constructor/method found for actual parameters 

"org.apache.spark.unsafe.types.UTF8String"; 
candidates are: 
"public static java.lang.Double java.lang.Double.valueOf(java.lang.String) throws java.lang.NumberFormatException",
"public static java.lang.Double java.lang.Double.valueOf(double)"

Что я делаю не так?

1 Ответ

1 голос
/ 24 апреля 2020
Проблема

не в вашем коде, а в ваших JSON данных. Это должно быть

{"probability":0.26,"store":"abc/s3"}
{"probability":0.57,"store":"abc/s1"}

Или изменить private Double probability; на private String probability;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...