Java整合Spark第一个程序WordCount
发布日期:2021-06-28 19:43:20 浏览次数:2 分类:技术文章

本文共 2508 字,大约阅读时间需要 8 分钟。

创建一个maven工程。

一、添加pom依赖。

org.apache.spark
spark-core_2.12
3.1.1

我搭建的服务器安装的scala版本是2.12.10,spark版本是3.1.1,所以依赖一个版本匹配的pom包。大数据处理工程依赖包和服务器版本一致是必须要考虑的一个问题。

二、测试类。

package com.chris.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 org.apache.spark.api.java.function.FlatMapFunction;import org.apache.spark.api.java.function.Function2;import org.apache.spark.api.java.function.PairFunction;import org.apache.spark.api.java.function.VoidFunction;import scala.Serializable;import scala.Tuple2;import java.util.Arrays;import java.util.Iterator;import java.util.stream.Collectors;/** * @author Chris Chan * Create on 2021/5/22 15:16 * Use for: * Explain: WordCount */public class WordCountTest implements Serializable {    public static void main(String[] args) {        new WordCountTest().execute(args);    }    private void execute(String[] args) {        //配置        SparkConf conf = new SparkConf();        conf.setAppName("SparkWordCountTest");        conf.setMaster("local");        //获取上下文        JavaSparkContext sparkContext = new JavaSparkContext(conf);        String filePath = getClass().getClassLoader().getResource("spark.txt").getFile();        JavaRDD
linesRDD = sparkContext.textFile(filePath); //map计算 拆分单词 JavaRDD
wordJavaRDD = linesRDD.flatMap(new FlatMapFunction
() { @Override public Iterator
call(String s) throws Exception { return Arrays.stream(s.split(" ")) .map(String::trim) .filter(word -> !"".equals(word)) .collect(Collectors.toList()).iterator(); } }); //map计算 转换类型 JavaPairRDD
javaPairRDD = wordJavaRDD.mapToPair(new PairFunction
() { @Override public Tuple2
call(String word) throws Exception { return new Tuple2<>(word, 1L); } }); //reduce计算 统计 JavaPairRDD
wordCounts = javaPairRDD.reduceByKey(new Function2
() { @Override public Long call(Long v1, Long v2) throws Exception { return v1 + v2; } }); //输出结果 wordCounts.foreach(new VoidFunction
>() { @Override public void call(Tuple2
stringLongTuple2) throws Exception { System.out.printf("%s,%d\n", stringLongTuple2._1, stringLongTuple2._2); } }); }}

从本地文本文件获取数据,经过map和reduce两次计算,获取单词使用频次统计结果并输出到控制台。

 

转载地址:https://blog.csdn.net/xxkalychen/article/details/117178189 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Java整合Flink将结果写入ElasticSearch
下一篇:CentOS7安装Scala2.12.10

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年04月17日 20时49分53秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

Android开发究竟该如何学习,成功入职字节跳动 2019-04-29
三年老Android经验面经,看看这篇文章吧! 2019-04-29
为什么Android要采用Binder作为IPC机制?成功入职腾讯 2019-04-29
海量算法高频面试题精编解析,附超全教程文档 2019-04-29
深入浅出Android性能调优,系列篇 2019-04-29
深入浅出Android性能调优,附大厂真题面经 2019-04-29
深入解析Android-AutoLayout,全网疯传 2019-04-29
深入解析android核心组件和应用框架,最全Android知识总结 2019-04-29
深入解析android核心组件和应用框架,社招面试心得 2019-04-29
深度解析跳槽从开始到结束完整流程,持续更新中 2019-04-29
深度解析跳槽从开始到结束完整流程,面试真题解析 2019-04-29
hashmap扩容过程,字节大神强推千页PDF学习笔记,经典好文 2019-04-29
kotlin面试题!Android大厂高频面试题解析,薪资翻倍 2019-04-29
kotlin面试题!一口气拿了9家公司的offer,已拿offer入职 2019-04-29
retrofit优点,互联网寒冬公司倒闭后,年薪50W 2019-04-29
retrofit原理面试,Android性能优化最佳实践,面试必备 2019-04-29
【工作感悟】Android多进程从头讲到尾,offer拿到手软 2019-04-29
【微信小程序】面试一路绿灯Offer拿到手软,好文推荐 2019-04-29
Android之内存泄漏调试学习与总结,分享PDF高清版 2019-04-29
事件分发机制怎么回答,Android开发究竟该如何学习,使用指南 2019-04-29