代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Java
】
实现TopK
作者:
/ 发布于
2017/3/23
/
639
首先实现wordcount,topk实现是以wordcount为基础,在此不再赘述此部分 在分词统计完成后交换key/value,然后调用sortByKey进行排序
1. 实例描述 输入: 之前做Hadoop时hadoop自带的README.md文件 输出: (158,) (28,the) (19,to) (18,Spark) (17,and) (11,Hadoop) (10,##) (8,you) (8,with) (8,for) 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; import java.io.Serializable; import java.util.Arrays; import java.util.Comparator; import java.util.List; import java.util.regex.Pattern; /** * Calculate the top k words in a file inputted * * Created by ??? on 2015/3/20. */ public class TopK { public static final Pattern SPACE = Pattern.compile(" "); public static void main(String[] args)throws Exception { String inPath = null; if (args.length == 1) { inPath = args[0]; } else { System.out.println("Usage: <src> [des]"); } SparkConf sparkConf = new SparkConf().setAppName("Word Count"); JavaSparkContext jsc = new JavaSparkContext(sparkConf); JavaRDD<String> lines = jsc.textFile(inPath); JavaRDD<String> words = lines.flatMap(new FlatMapFunction<String, String>() { @Override public Iterable<String> call(String s) throws Exception { return Arrays.asList(SPACE.split(s)); } }); JavaPairRDD<String, Integer> pairs = words.mapToPair(new PairFunction<String, String, Integer>() { @Override public Tuple2<String, Integer> call(String s) throws Exception { return new Tuple2<String, Integer>(s, 1); } }); JavaPairRDD<String, Integer> counts = pairs.reduceByKey(new Function2<Integer, Integer, Integer>() { @Override public Integer call(Integer i1 , Integer i2) throws Exception { return i1 + i2; } }); JavaPairRDD<Integer, String> converted = counts.mapToPair(new PairFunction<Tuple2<String, Integer>, Integer, String>() { @Override public Tuple2<Integer, String> call(Tuple2<String, Integer> tuple) throws Exception { return new Tuple2<Integer, String>(tuple._2(), tuple._1()); } }); JavaPairRDD<Integer, String> sorted = converted.sortByKey(true, 1); List<Tuple2<Integer, String>> topK = sorted.top(5, new Comp()); for(Tuple2<Integer, String> top: topK) { System.out.println(top._2() + ": " + top._1()); } jsc.stop(); } } class Comp implements Comparator<Tuple2<Integer, String>>, Serializable { @Override public int compare(Tuple2<Integer, String> o1, Tuple2<Integer, String> o2) { if(o1._1() < o2._1()) { return -1; }else if(o1._1() > o2._1()) { return 1; }else { return 0; } } }
试试其它关键字
TopK
同语言下
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
贡献的其它代码
Label
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3