Java,如何在Spark中收集过滤掉的值

时间:2015-10-21 19:29:02

标签: java filter apache-spark

我的输入是字符串的集合,Say:

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”列表包含[Chicago, Chicago].

但它空洞。有人可以帮我吗。

1 个答案:

答案 0 :(得分:1)

Spark功能更强大,因此更新变量不会起作用。*您应该使用filter的输出并调用collect

此外,如果要保留项目,则需要返回true。看来你已经倒退了。

*关闭变量对每个工人都是COPIED。所以更新只是工作者本地副本。