java

 /**
* 根据单词次数排序的wordcount
* @author Tele
*
*/
public class SortWordCount {
private static SparkConf conf = new SparkConf().setMaster("local").setAppName("sortwordcount");
private static JavaSparkContext jsc = new JavaSparkContext(conf);
private static String path = "D:\\inputword\\result.txt"; public static <U> void main(String[] args) {
JavaRDD<String> rdd = jsc.textFile(path); /*
* JavaRDD<String> lines = rdd.flatMap(new FlatMapFunction<String,String>() {
*
* private static final long serialVersionUID = 1L;
*
* @Override public Iterator<String> call(String t) throws Exception { return
* Arrays.asList(t.split(" ")).iterator(); } });
*
* JavaPairRDD<String, Integer> tuples = lines.mapToPair(new
* PairFunction<String,String,Integer>() {
*
* private static final long serialVersionUID = 1L;
*
* @Override public Tuple2<String,Integer> call(String t) throws Exception {
* return new Tuple2<String,Integer>(t,1); } });
*/ JavaPairRDD<String, Integer> tuples = rdd.flatMapToPair(new PairFlatMapFunction<String, String, Integer>() { private static final long serialVersionUID = 1L; @Override
public Iterator<Tuple2<String, Integer>> call(String t) throws Exception {
Stream<Tuple2<String, Integer>> stream = Arrays.asList(t.split(" ")).stream()
.map(i -> new Tuple2<>(i, 1));
return stream.iterator();
}
}); JavaPairRDD<String, Integer> wc = tuples.reduceByKey(new Function2<Integer, Integer, Integer>() { private static final long serialVersionUID = 1L; @Override
public Integer call(Integer v1, Integer v2) throws Exception {
return v1 + v2;
}
}); // 将词频与单词互换位置
JavaPairRDD<Integer, String> cw = wc.mapToPair(new PairFunction<Tuple2<String, Integer>, Integer, String>() { private static final long serialVersionUID = 1L; @Override
public Tuple2<Integer, String> call(Tuple2<String, Integer> t) throws Exception {
return new Tuple2<Integer, String>(t._2, t._1);
}
}); JavaPairRDD<Integer, String> result = cw.sortByKey(false);
result.foreach(new VoidFunction<Tuple2<Integer, String>>() { private static final long serialVersionUID = 1L; @Override
public void call(Tuple2<Integer, String> t) throws Exception {
System.out.println(t._2 + "----" + t._1);
}
}); // 也可以在排序完毕后换成单词-词频的形式
/*
* JavaPairRDD<String, Integer> result = cw.sortByKey(false).mapToPair(new
* PairFunction<Tuple2<Integer,String>,String,Integer>() {
*
* private static final long serialVersionUID = 1L;
*
* @Override public Tuple2<String,Integer> call(Tuple2<Integer, String> t)
* throws Exception { return new Tuple2<String,Integer>(t._2,t._1); } });
*
* result.foreach(new VoidFunction<Tuple2<String,Integer>>() {
*
* private static final long serialVersionUID = 1L;
*
* @Override public void call(Tuple2<String, Integer> t) throws Exception {
* System.out.println(t._1 + "-------" + t._2); } });
*/ jsc.close();
}
}

scala

 object SortWordCount {
def main(args: Array[String]): Unit = {
val conf = new SparkConf().setMaster("local").setAppName("sortwordcount");
val sc = new SparkContext(conf); val rdd = sc.textFile("D:\\inputword\\result.txt", 1); val wordcount = rdd.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_ + _);
wordcount.map(t => (t._2, t._1)).sortByKey(false, 1).map(t => (t._2, t._1)).foreach(t => println(t._1 + "-----" + t._2)); }
}

spark 基于key排序的wordcount的更多相关文章

  1. 55、Spark Streaming:updateStateByKey以及基于缓存的实时wordcount程序

    一.updateStateByKey 1.概述 SparkStreaming 7*24 小时不间断的运行,有时需要管理一些状态,比如wordCount,每个batch的数据不是独立的而是需要累加的,这 ...

  2. Java Map 键值对排序 按key排序和按Value排序

    一.理论准备 Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等. TreeMap:基于红黑树(Red-Black tre ...

  3. Spark standalone简介与运行wordcount(master、slave1和slave2)

    前期博客 Spark standalone模式的安装(spark-1.6.1-bin-hadoop2.6.tgz)(master.slave1和slave2)  Spark运行模式概述 1. Stan ...

  4. Spark大数据处理 之 从WordCount看Spark大数据处理的核心机制(2)

    在上一篇文章中,我们讲了Spark大数据处理的可扩展性和负载均衡,今天要讲的是更为重点的容错处理,这涉及到Spark的应用场景和RDD的设计来源. Spark的应用场景 Spark主要针对两种场景: ...

  5. 输入DStream之基础数据源以及基于HDFS的实时wordcount程序

    输入DStream之基础数据源以及基于HDFS的实时wordcount程序 一.Java方式 二.Scala方式 基于HDFS文件的实时计算,其实就是,监控一个HDFS目录,只要其中有新文件出现,就实 ...

  6. C++ STL中Map的按Key排序和按Value排序

    map是用来存放<key, value>键值对的数据结构,可以很方便快速的根据key查到相应的value.假如存储学生和其成绩(假定不存在重名,当然可以对重名加以区 分),我们用map来进 ...

  7. Map排序——按key排序,按value排序

    注:转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/5959279.html 上一篇博文谈到了集合类的自定义排序方式,那么进一步扩展开来,与集合同等重要的Map有 ...

  8. C++ STL中Map的相关排序操作:按Key排序和按Value排序 - 编程小径 - 博客频道 - CSDN.NET

    C++ STL中Map的相关排序操作:按Key排序和按Value排序 - 编程小径 - 博客频道 - CSDN.NET C++ STL中Map的相关排序操作:按Key排序和按Value排序 分类: C ...

  9. python字典的排序,按key排序和按value排序---sorted()

    >>> d{'a': 5, 'c': 3, 'b': 4} >>> d.items()[('a', 5), ('c', 3), ('b', 4)] 字典的元素是成键 ...

随机推荐

  1. ACCESS数据库改名asp或asa

    到把mdb改为asp或asa ACCESS数据库:把数据库后缀名改成ASP是防止ACCESS数据库被下载

  2. COdeVS——T 1082 线段树练习 3 (分块练习)

    http://codevs.cn/problem/1082/ 时间限制: 3 s  空间限制: 128000 KB  题目等级 : 大师 Master 题解       题目描述 Descriptio ...

  3. 软件——机器学习与Python,聚类,K——means

    K-means是一种聚类算法: 这里运用k-means进行31个城市的分类 城市的数据保存在city.txt文件中,内容如下: BJ,2959.19,730.79,749.41,513.34,467. ...

  4. Css fixed和absolute定位差别

    fixed:固定定位 absolute:绝对定位 差别非常easy: 1.没有滚动栏的情况下没有差异 2.在有滚动栏的情况下.fixed定位不会随滚动栏移动而移动.而absolute则会随滚动栏移动 ...

  5. linux系统进程的查看与控制

    原文:linux系统进程的查看与控制 一.什么是进程? 进程就是系统未完成并且正在进行的工作. 二.查看系统进程 1.图形方式查看 gnome-system-monitor 2.进程查看命令 ps - ...

  6. 【b702】字符串的展开

    Time Limit: 1 second Memory Limit: 50 MB [问题描述] 在初赛普及组的"阅读程序写结果"的问题中,我们曾给出一个字符串展开的例子:如果在输入 ...

  7. [机器学习] Coursera ML笔记 - 逻辑回归(Logistic Regression)

    引言 机器学习栏目记录我在学习Machine Learning过程的一些心得笔记,涵盖线性回归.逻辑回归.Softmax回归.神经网络和SVM等等.主要学习资料来自Standford Andrew N ...

  8. [Angular] Separating Structural Styles From Theme Styles - Making Components Themeable

    For the component's css file, we can improt two css files: common.css default-theme.css @import &quo ...

  9. Android自定义组件系列【10】——随ViewPager滑动的导航条

    昨天在用到ViewPager实现滑动导航的时候发现微信的导航条效果是跟随ViewPager的滑动而动的,刚开始想了一下,感觉可以使用动画实现,但是这个滑动是随手指时时变化的,貌似不可行,后来再网上搜了 ...

  10. 在vue中使用babel-polyfill

    在 Vue.js项目中使用Vuex,Vuex 依赖 Promise,所以如果你的浏览器没有实现 Promise (比如 IE),那么就需要使用一个 polyfill 的库 我们可以通过babel-pr ...