利用Java的Spark做单词统计并排序
来源:互联网 发布:哪些软件可以看肉番 编辑:程序博客网 时间:2024/06/02 05:26
import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Comparator;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 scala.Tuple2;public class Demo { public static void main(String[] args) { String filename = "/home/iiip/PycharmProjects/InterestModel/data/sample/机器学习/D0002033.txt"; Demo demo = new Demo(); demo.CountWord(filename); } public List<Map.Entry<String, Integer>> CountWord(String filename) { SparkConf conf = new SparkConf(); conf.set("Spark.testing.memory", "2147480000"); JavaSparkContext sc = new JavaSparkContext("local[*]", "Spark", conf); JavaRDD<String> lines = sc.textFile(filename); // 读取文件的每一行 JavaRDD<String> words = lines.flatMap(new FlatWord()); // 从每一个行中读取单个的词 JavaPairRDD<String, Integer> wordsPair = words.mapToPair(new MapOne()); // 将词语做成<key,Value>键值对 JavaPairRDD<String , Integer> wordWithNum = wordsPair.reduceByKey(new WordCount()); // 对<key,Value>做一个Reduce操作 List<Tuple2<String, Integer>> result = wordWithNum.collect(); // 获取结果 Map<String, Integer> map = new HashMap<String , Integer> (); for(Tuple2<String , Integer> tuple : result){ map.put(tuple._1(), tuple._2()); } //根据结果的键值对, 按值排序 List<Map.Entry<String, Integer>> sortedWord = new ArrayList<Map.Entry<String, Integer>>(map.entrySet()); Collections.sort(sortedWord, new Comparator<Map.Entry<String, Integer>>(){ public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2){ return (o2.getValue() - o1.getValue()); } }); for(Map.Entry<String, Integer> word : sortedWord){ System.out.println(word.getKey() + " " + word.getValue()); } return sortedWord; } static class FlatWord implements FlatMapFunction<String, String>{ // 将每个单词映射成为单个元素 @Override public Iterable<String> call(String sentence) throws Exception { String[] words = sentence.split(" "); return Arrays.asList(words); } } static class MapOne implements PairFunction<String, String, Integer>{ @Override public Tuple2<String, Integer> call(String word){ return new Tuple2<String, Integer>(word, 1); } } static class WordCount implements Function2<Integer, Integer , Integer>{ @Override public Integer call(Integer i1, Integer i2){ return i1 + i2; } }}
阅读全文
0 0
- 利用Java的Spark做单词统计并排序
- Java 统计各个单词的个数并排序
- java实现读取一篇英文文章,统计其中每个单词出现的次数并排序输出
- java 统计10000篇文章中不同单词出现的次数并以次序排序
- 统计每行的单词出现次数并排序
- spark学习02之app流量统计并排序(JAVA)
- spark学习03之wordCount统计并排序(java)
- 统计一篇英文文件中,单词出现的次数,并按单词的长度进行排序
- 利用java集合框架统计单词的频率
- 2-1、Spark的单词统计WC
- 使用spark的dataframe实现单词统计
- spark sql版本的单词统计代码
- 启动Spark Shell,在Spark Shell中编写WordCount程序,在IDEA中编写WordCount的Maven程序,spark-submit使用spark的jar来做单词统计
- spark 统计单词个数
- SPark单词统计
- spark 单词统计
- Spark Streaming从Kafka中获取数据,并进行实时单词统计,统计URL出现的次数
- Java实现 统计单词出现的次数并按照单词频率从高到低输出
- WCF_IIS宿主服务
- hdu 1754 I Hate It 线段树基础题
- NYOJ-64-鸡兔同笼【数论】
- RaisedCosineWindower API及加窗
- mysql 查询 某一天 某个星期 某月的记录
- 利用Java的Spark做单词统计并排序
- textField.placeholder的文字颜色修改
- Unity Text竖直显示文字
- gerrit服务器搭建总结
- ubuntu设置静态ip
- 安卓界面方法调用
- J2EE的13种核心技术
- ssh 免密码登录
- BMapLib.HeatmapOverlay