我有一个使用Spark的Java类。我需要从JavaRDD过滤出标头。这就是我要这样做的方式。
String first = data.first(); JavaRDD<String> filteredData = data.filter((String s) -> {return !s.contains(first);});
但是,此代码data.filter((String s) -> {return !s.contains(first);})无法编译。IntelliJ IDE表示“此语言级别不支持Lambda表达式”。
data.filter((String s) -> {return !s.contains(first);})
您可以在Java 7上使用lambda,但涉及到一点点- 您必须使用Retrolambda之类的东西。
同样,您也可以在没有lambda的情况下执行相同的操作。Lambda可以通过匿名类轻松表示,但是冗长得多。
final String first = data.first(); JavaRDD<String> filteredData = data.filter(new Function<String, Boolean>() { @Override public Boolean call(String s) { return !s.contains(first); } });