我的输入是字符串的集合,说:
Chicago
Washington
Seattle
San Francisco
Chicago
Newyork
Dallas
我有以下代码可以过滤掉某些值:
List<String> filteredValues = new ArrayList<String>();
JavaRDD<String> filteredOutput = inputText.filter(line -> {
if(line.toLowerCase().contains("chicago")) {
filteredValues.add(line);
return false;
}
return true;
});
System.out.println("Filtered values are" + filteredValues.toString());
}
}
我期望“filteredValues”列表包含[芝加哥,芝加哥]。
但是它是空的。有人可以帮我吗。
最佳答案
Spark 的功能更强大,因此更新变量不起作用。*您应该使用 filter
的输出并调用 collect
。
此外,如果您想保留某个项目,则需要返回 true。看来你把这个搞反了。
*封闭变量被复制到每个工作人员。所以更新只是工作人员本地副本。
关于Java,如何在 Spark 中收集过滤掉的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33267647/