博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spark WordCount
阅读量:6624 次
发布时间:2019-06-25

本文共 4081 字,大约阅读时间需要 13 分钟。

hot3.png

Scala :

package com.xp.cnimport org.apache.spark.rdd.RDDimport org.apache.spark.{SparkConf, SparkContext}/** * Created by xupan on 2017/12/15. */object WordCount {  def main(args: Array[String]) {    //SparkContext:spark执行入口    val sc: SparkContext = new SparkContext(      new SparkConf()        .setAppName("WordCount")        .setMaster("local")    )    //textFile:指定读取数据的路径    //textFile(path: String,  minPartitions: Int = defaultMinPartitions):    //minPartitions:如果不指定,默认和hdfs的block息息相关    val textRdd: RDD[String] = sc.textFile("data/wordcount/wordcount.txt")    //统计单词个数    val wordCount: RDD[(String, Int)] = textRdd.flatMap(_.split(" ")).map(word => (word, 1)).reduceByKey(_ + _).sortBy(_._2, false)    //打印结果    wordCount.collect().take(10).foreach(print)    //保存到hdfs    wordCount.saveAsTextFile("hdfs://xupan001:8020/user/root/spark/output/wordcount")    //释放资源    sc.stop()  }}

 

 

 

java:

package com.xp.cn;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.*;import scala.Tuple2;import java.util.Arrays;import java.util.Iterator;/** * Created by xupan on 2017/12/15. */public class WordCountJava {    public static void main(String[] args) {        JavaSparkContext sc = new JavaSparkContext(                new SparkConf().setAppName("WordCountJava")                        .setMaster("local")        );        JavaRDD
lineJavaRDD = sc.textFile("data/wordcount/wordcount.txt"); //切分 JavaRDD
wordJavaRDD = lineJavaRDD.flatMap(new FlatMapFunction
() { public Iterator
call(String line) throws Exception { return Arrays.asList(line.split(" ")).iterator(); } }); //计数 JavaPairRDD
wordPairRDD = wordJavaRDD.mapToPair(new PairFunction
() { public Tuple2
call(String word) throws Exception { return new Tuple2
(word, 1); } }); //聚合 JavaPairRDD
reducePairRDD = wordPairRDD.reduceByKey(new Function2
() { public Integer call(Integer v1, Integer v2) throws Exception { return v1 + v2; } }); //反转 JavaPairRDD
resverRDD = reducePairRDD.mapToPair(new PairFunction
, Integer, String>() { public Tuple2
call(Tuple2
t) throws Exception { return new Tuple2
(t._2(), t._1()); } }); //排序 JavaPairRDD
sortRDD = resverRDD.sortByKey(false); //再次反转 JavaPairRDD
reResverRDD = sortRDD.mapToPair(new PairFunction
, String, Integer>() { public Tuple2
call(Tuple2
t) throws Exception { //return new Tuple2
(t._2(), t._1()); return t.swap(); // } }); //打印结果 reResverRDD.foreach(new VoidFunction
>() { public void call(Tuple2
pairs) throws Exception { System.out.println(pairs._1() + " : " + pairs._2()); } }); //关闭资源 sc.close(); }}

 

java1.8

package com.xp.cn;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 scala.Tuple2;import java.util.Arrays;/** * Created by xupan on 2017/12/15. */public class WordJavaLamb {    public static void main(String[] args) {        JavaSparkContext sc = new JavaSparkContext(                new SparkConf().setAppName("WordCountJava")                        .setMaster("local")        );        JavaRDD
javaRDD = sc.textFile("data/wordcount/wordcount.txt"); JavaRDD
lineRDD = javaRDD.flatMap(line -> Arrays.asList(line.split(" ")).iterator()); JavaPairRDD
result = lineRDD .mapToPair(word -> new Tuple2
(word, 1)) .reduceByKey((m, n) -> m + n)//聚合 .mapToPair(tp -> tp.swap())//交换位置 .sortByKey(false)//排序 .mapToPair(tp -> tp.swap());//交换位置 //打印结果 result.foreach(wordcount -> System.out.println(wordcount._1() + ":" + wordcount._2())); //关闭资源 sc.close(); }}

 

转载于:https://my.oschina.net/u/2253438/blog/1590353

你可能感兴趣的文章
2016最新搜索引擎优化(SEO)重点要素
查看>>
当Web访问性能出现问题,如何深探?
查看>>
【IOS-COCOS2D-X 游戏开发之二】【必看篇】总结阐述COCOS2D-X与COCOS2D-IPHONE区别;
查看>>
ExtJs之Ext.core.Element
查看>>
六套 App:构建我的产品设计工作流
查看>>
eoLinker-API_Shop_通讯服务类API调用的代码示例合集:短信服务、手机号归属地查询、电信基站查询等...
查看>>
因为小程序的scroll-view组件不能下拉刷新我做了个开源项目
查看>>
JavaScript 垃圾回收机制
查看>>
前端面试回忆录 - 滴滴篇 - 凉面
查看>>
jxl导入Excel 切割List 并使用MyBatis批量插入数据库
查看>>
BMIP002协议介绍
查看>>
前端的一些基础知识
查看>>
小程序开发总结
查看>>
win10系统设置webp文件默认用照片查看器打开的两种方法
查看>>
使用阿里云发送邮件
查看>>
Tomcat监听器设计思路
查看>>
react native 入门之javascript
查看>>
管理ORACLE实例
查看>>
Confluence 6 MySQL 数据库设置准备
查看>>
Ruby 中 0/0.0 = NaN
查看>>