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. Git 基本使用方法

    Git有一个优点,在本地的每个项目都是一个完整的仓库,除了须要从网络拉取和推送到网络之外,其它全部的操作都能够在本地完毕. 本文简单地介绍怎样在本地使用Git来对文件进行管理,下一篇文章再来说一下分支 ...

  2. 【习题 3-1 UVA - 1585】Score

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 模拟水题 [错的次数] 在这里输入错的次数 [反思] 在这里输入反思 [代码] #include <bits/stdc++.h ...

  3. 【BZOJ 2119】股市的预测

    [链接]h在这里写链接 [题意]     给你一个长度为n的数组a[]     设b[i] = a[i+1]-a[i];     然后让你在b[i]里面找ABA的形式.     这里B的长度要求为m; ...

  4. Netty原理和使用

    性能主题 Netty原理和使用 Netty是一个高性能 事件驱动的异步的非堵塞的IO(NIO)框架,用于建立TCP等底层的连接,基于Netty可以建立高性能的Http服务器.支持HTTP. WebSo ...

  5. WCF REST 基础教程

    概述 Representational State Transfer(REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格. 因此REST是设计风格而不是标准,R ...

  6. php实现记忆化递归--以斐波那契数列为例(还是以边学边做为主,注重练习)

    php实现记忆化递归--以斐波那契数列为例(还是以边学边做为主,注重练习) 一.总结 1.递归不优化的话,30层开外就有点吃力了 2.php因为定义变量的时候不用定义变量类型,所以数组里面的类型也是p ...

  7. ldd 查看程序/动态库 的依赖

    今天在帮同事查看一个问题时, 需要用到ldd, 于是就顺便看了一下ldd的实现. 好在ldd本身只是一个脚本, 而不是executable, 可以直接查看实现的代码. 根据注释: 21 # This ...

  8. Vmware P2V 清除被隱藏網卡佔用的的IP

    修改註冊表也可以讓非正常卸載的網卡釋放捆綁的固定的IP地址,註冊表中定位於中:HKEY_LOCAL_MACHINE \SYSTEM\ CurrentControlSet\Services\Tcpip\ ...

  9. vscode visual studio code svn 小乌龟 快捷键设置

    首先要安装svn小乌龟 然后安装vs code的svn插件TortoiseSVN for VS Code 文件->首选项->键盘快捷方式->搜索svn->找到相应命令然后设置快 ...

  10. 事件处理之一:两种方式:监听器与回调 分类: H1_ANDROID 2013-10-31 10:26 3250人阅读 评论(0) 收藏

    Android组件的事件处理有2种方式: 1.基于监听器的事件处理方式:先定义组件,然后为组件设定监听器. 详见http://blog.csdn.net/jediael_lu/article/deta ...