spark 基于key排序的wordcount
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的更多相关文章
- 55、Spark Streaming:updateStateByKey以及基于缓存的实时wordcount程序
一.updateStateByKey 1.概述 SparkStreaming 7*24 小时不间断的运行,有时需要管理一些状态,比如wordCount,每个batch的数据不是独立的而是需要累加的,这 ...
- Java Map 键值对排序 按key排序和按Value排序
一.理论准备 Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等. TreeMap:基于红黑树(Red-Black tre ...
- Spark standalone简介与运行wordcount(master、slave1和slave2)
前期博客 Spark standalone模式的安装(spark-1.6.1-bin-hadoop2.6.tgz)(master.slave1和slave2) Spark运行模式概述 1. Stan ...
- Spark大数据处理 之 从WordCount看Spark大数据处理的核心机制(2)
在上一篇文章中,我们讲了Spark大数据处理的可扩展性和负载均衡,今天要讲的是更为重点的容错处理,这涉及到Spark的应用场景和RDD的设计来源. Spark的应用场景 Spark主要针对两种场景: ...
- 输入DStream之基础数据源以及基于HDFS的实时wordcount程序
输入DStream之基础数据源以及基于HDFS的实时wordcount程序 一.Java方式 二.Scala方式 基于HDFS文件的实时计算,其实就是,监控一个HDFS目录,只要其中有新文件出现,就实 ...
- C++ STL中Map的按Key排序和按Value排序
map是用来存放<key, value>键值对的数据结构,可以很方便快速的根据key查到相应的value.假如存储学生和其成绩(假定不存在重名,当然可以对重名加以区 分),我们用map来进 ...
- Map排序——按key排序,按value排序
注:转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/5959279.html 上一篇博文谈到了集合类的自定义排序方式,那么进一步扩展开来,与集合同等重要的Map有 ...
- C++ STL中Map的相关排序操作:按Key排序和按Value排序 - 编程小径 - 博客频道 - CSDN.NET
C++ STL中Map的相关排序操作:按Key排序和按Value排序 - 编程小径 - 博客频道 - CSDN.NET C++ STL中Map的相关排序操作:按Key排序和按Value排序 分类: C ...
- python字典的排序,按key排序和按value排序---sorted()
>>> d{'a': 5, 'c': 3, 'b': 4} >>> d.items()[('a', 5), ('c', 3), ('b', 4)] 字典的元素是成键 ...
随机推荐
- Mine Vison base on VC++ and procilica Gige Vison SDK
This is my first vision base on VC++6.0. I am so happy to record this time i succesfully create it b ...
- 多校连萌15-8-12#A
#include <cstdio> #include <iostream> #include <algorithm> #include <queue> ...
- 微信支付v2开发(4) 交易通知
本文介绍如何使用JS API支付时如何获得交易通知. 一.交易通知 用户在成功完成支付后,微信后台通知(POST)商户服务器(notify_url)支付结果.商户可以使用notify_url的通知结果 ...
- Java Callable Future Example(java 关于Callable,Future的例子)
Home » Java » Java Callable Future Example Java Callable Future Example April 3, 2018 by Pankaj 25 C ...
- 把git仓库从码云迁到github,及git常用命令
前言 刚开始建仓库的时候,因为网络的原因选择了国内的码云.后来又想换成github,毕竟平时github使用率比较高. 替换远程仓库地址方式如下: git remote set-url origin ...
- [React] Create an Auto Resizing Virtualized List with react-virtualized
In this lesson we'll show how to use the AutoSizer component from react-virtualized to automatically ...
- ZOJ 1108 FatMouse's Speed (HDU 1160) DP
传送门: ZOJ:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=108 HDU :http://acm.hdu.edu.cn/s ...
- 0、驱动及应用小技巧、uboot指令及环境变量配置、linux常用命令
(内核make menuconfig之后,通过insmod安装的驱动都应该重新make,可能会出现一些莫名的问题) (nor flash/SDRAM/DM9000都受内存控制器控制,需要配置内存控制器 ...
- C語言 rand函数 进阶探讨与实现
C语言中随机函数应用 可能大家都知道C语言中的随机函数random,但是random函数并非ANSI C标准,所以说.random函数不能在gcc,vc等编译器下编译通过. 那么怎么实现 ...
- Range锁(也即范围锁)
浅析SQL Server在可序列化隔离级别下,防止幻读的范围锁的锁定问题 本文出处:http://www.cnblogs.com/wy123/p/7501261.html (保留出处并非什么原创作品权 ...