Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有没有办法过滤包含特定模式的RDD_Java_Apache Spark - Fatal编程技术网

Java 有没有办法过滤包含特定模式的RDD

Java 有没有办法过滤包含特定模式的RDD,java,apache-spark,Java,Apache Spark,在下面的代码中,我正在筛选包含404 HTTP状态代码的日志,但现在如果我想筛选包含400-405任何HTTP状态代码的日志,请执行以下操作 JavaRDD<String> IPList = sc.textFile("/home/bhaumik/Documents/access_log", 1) .filter(new Function<String, Boolean>() { @Override publ

在下面的代码中,我正在筛选包含404 HTTP状态代码的日志,但现在如果我想筛选包含400-405任何HTTP状态代码的日志,请执行以下操作

JavaRDD<String> IPList = sc.textFile("/home/bhaumik/Documents/access_log", 1)
        .filter(new Function<String, Boolean>() {

            @Override
            public Boolean call(String v1) throws Exception {
                // TODO Auto-generated method stub
                return v1.contains(" 404 ");
            }
        });

我认为正则表达式在这里起作用:

return v1.matches(".*40[0-5].*")

这与包含400-405的字符串匹配。这也意味着,如果400以另一种方式出现在日志中,它将拾取它。您可能希望在分隔符上拆分,然后将其转换为
Int
,并进行适当的检查。

我认为正则表达式在这里起作用:

return v1.matches(".*40[0-5].*")
这与包含400-405的字符串匹配。这也意味着,如果400以另一种方式出现在日志中,它将拾取它。您可能希望拆分分隔符,然后将其转换为
Int
,并进行适当的检查。

一种简单的方法是:

return v1.contains(" 400 ")||v1.contains(" 401 ")||v1.contains(" 402 ");
但这样,当文件大小为400…405时,可能会出现误报

一种备选方案可以是:

String[] parts = v1.split(" ");
return parts[parts.length - 2].matches("40[0-5]");
希望有帮助。

一个简单的方法是:

return v1.contains(" 400 ")||v1.contains(" 401 ")||v1.contains(" 402 ");
但这样,当文件大小为400…405时,可能会出现误报

一种备选方案可以是:

String[] parts = v1.split(" ");
return parts[parts.length - 2].matches("40[0-5]");

希望有帮助。

添加日志样本将有助于添加更正确的答案。您可以看到我更新的问题。添加日志样本将有助于添加更正确的答案。您可以看到我更新的问题。Justin使用的正则表达式更优雅。我改变了答案,在包含HTTP代码的日志块上使用正则表达式。Justin使用的正则表达式更优雅。我更改了答案,在包含HTTP代码的日志块上使用正则表达式。