Spark案例:Java版统计单词个数

1、Maven项目JavaSparkWordCount

Spark案例:Java版统计单词个数_第1张图片

2、在pom.xml里,添加对spark的依赖



    4.0.0

    net.hw.spark
    JavaSparkWordCount
    1.0-SNAPSHOT

    
        
            org.apache.spark
            spark-core_2.11
            2.2.1
        
    

3、在input目录里的文本文件test.txt

Spark案例:Java版统计单词个数_第2张图片

4、WordCount类

package net.hw.spark;

import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaPairRDD;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import scala.Tuple2;

import java.io.File;
import java.util.Arrays;

/**
 * Created by howard on 2018/2/1.
 */
public class WordCount {
    public static void main(String[] args) {
        String inputPath = "input";
        String outputPath = "result";

        SparkConf conf = new SparkConf().setMaster("local").setAppName("wordcount");
        JavaSparkContext sc = new JavaSparkContext(conf);

        // 读取文件
        JavaRDD input = sc.textFile(inputPath);
        // 切分单词
        JavaRDD words = input.flatMap(
                x -> Arrays.asList(x.split(" ")).iterator());
        // 转换成键值对并计数
        JavaPairRDD counts = words.mapToPair(x -> new Tuple2<>(x, 1))
                .reduceByKey((x, y) -> x + y);

        // 输出统计结果
        System.out.println(counts.collect());

        // 删除输出目录
        File dir = new File(outputPath);
        File[] files = dir.listFiles();
        if (files != null) {
            for (File file : files) {
                file.delete();
            }
        }
        dir.delete();

        // 将统计结果写入结果文件
        counts.saveAsTextFile(outputPath);
    }
}

运行结果如下:


统计结果还保存在result目录里的part-00000文件里:

Spark案例:Java版统计单词个数_第3张图片

你可能感兴趣的:(大数据基础)