Apache spark 没有适用的构造函数错误,无法将spark数据集收集为列表或映射

Apache spark 没有适用的构造函数错误,无法将spark数据集收集为列表或映射,apache-spark,apache-spark-dataset,Apache Spark,Apache Spark Dataset,我有一节课 @Getter @Setter @AllArgsConstructor @NoArgsConstructor public class Store { private Double probability; private String store; } 和json文件 {"probability":"0.26","store":"abc/s3"} {"probability":"0.57","store":"abc/s1"} 我尝试将其作为数据集读取并将其

我有一节课

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

    private Double probability;

    private String store;

}
和json文件

{"probability":"0.26","store":"abc/s3"}
{"probability":"0.57","store":"abc/s1"}
我尝试将其作为数据集读取并将其转换为地图。读取数据集是成功的,可以使用spark sql命令对其进行操作,也可以使用show()等查看数据集


我做错了什么?

问题不在代码中,而在JSON数据中。应该是

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

或改变
私人双重概率
私有字符串概率

你能检查一下json文件中的这个列-概率值吗,你得到的都是双倍的吗?您还可以显示您的ds模式吗?作为数据集读取是成功的,因为它将该列值作为字符串读取。问题是将字符串转换为双精度。。我觉得您的列中有一些无法解析为双精度的字符串值。
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)"
{"probability":0.26,"store":"abc/s3"}
{"probability":0.57,"store":"abc/s1"}