我写了以下函数:
Function<LabeledPoint,Boolean> filterPredicateAcc = new Function<LabeledPoint,Boolean>() {
public Boolean call(LabeledPoint p) {
List<Double> featureValues = new ArrayList<>();
for (double val: p.features().toArray()) {
featureValues.add(val);
}
double pred = finalModel.regressionPrediction(featureNamesList,featureValues);
int mappedPred = pred >= classOneThreshold ? 1 : 0;
int label = (int) p.label();
return mappedPred == label;
}
};
当我执行以下操作时: JavaRDD数据; data.map(filterPredicateAcc)我得到了预期的结果,即具有正确布尔值的JavaRDD。
当我执行以下操作时: data.filter(filterPredicateAcc)它返回null,即使应该返回一些元素。
我做错了什么?我想我需要在过滤器调用中传递一个布尔函数。
感谢。
答案 0 :(得分:0)
当我执行以下操作时:data.filter(filterPredicateAcc)它返回null,即使应该返回一些元素。
filterPredicateAcc是否返回布尔值?地图也返回所有布尔值为&#34; False&#34;?在这种情况下,返回null的过滤器是有意义的。