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

标签 java filter apache-spark

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

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/

相关文章:

模拟人类鼠标移动的Java Robot类

java - 部署 Spring-React-SQL Web 应用程序

java - 如何处理持久的 http 请求

scala - 如何在Spark数据帧中执行条件 "withColumn"?

scala - Spark 比较 bool 列与字符串列的工作方式与比较 int 和字符串(其中值相等)的方式不同

apache-spark - kerberos 环境的 Oozie Spark 操作失败

java - 在 Eclipse 中生成可运行 JAR 的热键

javascript - 如何在 JavaScript 中过滤 JSON 对象?

c# - 高效过滤DataTable

vb.net - 如何使用 DataSet 作为数据源过滤 DataGridView