性能:使用spark计算特定单词的频率

时间:2017-01-17 13:06:10

标签: java apache-spark

我正在读取hdfs文件中的单词,该文件大小约为3.3 GB,并使用spark来计算特定单词的频率。

queryList是我必须计算其频率的单词集合。

这是我目前的代码

//filter
JavaRDD<String> filterFp = textFile.filter(new Function<String, Boolean>() {
    @Override
    public Boolean call(String s) throws Exception {
        boolean res = s.equals(queryList.get(0));
        for (int i = 1; i < queryList.size(); i++) {
            res = res || s.equals(queryList.get(i));
        }
        return res;
    }
});
// map
JavaPairRDD<String, Integer> mapper =
        filterFp.mapToPair(new PairFunction<String, String, Integer>() {
            @Override
            public Tuple2<String, Integer> call(String s) throws Exception {
                return new Tuple2<>(s, 1);
            }
        });

// reduce
JavaPairRDD<String, Integer> counts = mapper.reduceByKey(new Function2<Integer, Integer, Integer>() {
    @Override
    public Integer call(Integer integer, Integer integer2) throws Exception {
        return integer + integer2;
    }
});

所有工作时间的总和是5-6秒。

有没有什么方法可以更好地优化我的任务。

0 个答案:

没有答案
相关问题