JavaRDD.filter()即使JavaRDD.map()与该函数一起使用也不起作用

时间:2016-08-17 17:52:21

标签: java apache-spark apache-spark-mllib

我写了以下函数:

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,即使应该返回一些元素。

我做错了什么?我想我需要在过滤器调用中传递一个布尔函数。

感谢。

1 个答案:

答案 0 :(得分:0)

  
    
      

当我执行以下操作时:data.filter(filterPredicateAcc)它返回null,即使应该返回一些元素。

    
  

filterPredicateAcc是否返回布尔值?地图也返回所有布尔值为&#34; False&#34;?在这种情况下,返回null的过滤器是有意义的。