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(); JavaRDDlinesRDD = 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
表示我来过!
[***.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