尝试将400个模式匹配到18 GB的文本文件时,火花作业运行缓慢

时间:2016-10-15 00:39:33

标签: apache-spark

我正在尝试使用apache spark来解析存储在hadoop上的18 GB文本数据。我的解析算法包括将400个模式与文本文件中的每一行进行比较。

算法将文件加载到RDD中,然后运行过滤操作以识别与400个模式中的至少一个模式匹配的行。

当我在我们的5节点hadoop集群上运行时,我将在8分钟内完成工作。我认为它可以进一步改进,但我不知道该怎么做。

以下是我的一些火花配置

spark.executor.instances 5    
spark.executor.cores 30    
spark.executor.memory  6g  

Java代码

logLines = javaSparkContext.textFile(logFile);

JavaRDD<String> lineWithPatternMatchRDD = logLines.filter(new Function<String, Boolean>() {
            public Boolean call(String lineText) {
                for (Pattern pat : patternList) {
                    if (pat.PatternType == "SubString") {
                        if (lineText.indexOf(pat.getText()) >= 0) {
                            return true;
                        }
                    } else if (pat.PatternType == "Regex") {
                        //Get pattern from map of pre compiled patterns
                        Pattern p = patternsMap.get(pat.getText());
                        Matcher m = p.matcher(lineText);
                        if (m.matches()) {
                            return true;
                        }
                    }
                }
                return false;
            }
});

System.out.println(lineWithPatternMatchRDD.count());

0 个答案:

没有答案