示例说明

最近更新时间: 2026-03-13 09:03:00

本教程演示的是:提交的任务为 WordCount 任务,即统计单词个数,需要提前在集群中准备需要统计的文件,可以是一个 HDFS 文件,或 Yarn 集群所有节点上都存在的本地文件。更多说明请查看示例工程 README.md。


// 初始化Spark上下文
SparkConf sparkConf = new SparkConf().setAppName("SparkWordCountJavaExample");
JavaSparkContext sc = new JavaSparkContext(sparkConf);

// 读取文件并进行WordCount计算
// 首先将文本按照空格进行分割,然后针对每个单词 word,将其转换为一个二元组(word, 1),最后按照单词 word 进行累加计算
JavaRDD<String> textFile = sc.textFile(args[0]);
JavaPairRDD<String, Integer> counts = textFile
    .flatMap(s -> Arrays.asList(s.split(" ")).iterator())
    .mapToPair(word -> new Tuple2<>(word, 1))
    .reduceByKey(Integer::sum);

// 保存计算结果
if (args.length > 1 && args[1] != null && args[1].length() > 0) {
    counts.saveAsTextFile(args[1]);
}

// 收集计算结果,打印日志并输出控制台
List<Tuple2<String, Integer>> output = counts.collect();
    for (Tuple2<?, ?> tuple : output) {
        System.out.println(tuple._1 + " " + tuple._2);
        LOGGER.info(tuple._1 + " " + tuple._2);
}

// 关闭Spark上下文
sc.close();