引入:spark-scala-java实现wordcount

1.spark-scala实现wordcount

package com.cw.scala.spark

import org.apache.spark.{SparkConf, SparkContext}

/**
* spark wordcount
* hello java
* hello java
* hello spark
* *
* flatMap:
* hello
* java
* hello
* java
* hello
* spark
* *
* map:
* (hello,1)
* (java,1)
* (hello,1)
* (java,1)
* (hello,1)
* (spark,1)
*
* reduceByKey:将相同的key先分组,再针对每一个组去计算,对每一个组内的value计算
* 先分组
* (hello,1)
* (hello,1)
* (hello,1)
*
* (java,1)
* (java,1)
*
* (spark,1)
*/
object SparkWC {
def main(args: Array[String]): Unit = {
//conf可以设置SparkApplication的名称,设置Spark运行的模式
val conf = new SparkConf().setAppName("wordcount").setMaster("local")
//SparkContext是通往spark集群的唯一通道
val sc = new SparkContext(conf)
//sc.textFiles(path) 能将path里的所有文件内容读出,以文件中的每一行作为一条记录的方式
sc.textFile("./data/words").flatMap(_.split(" ")).map((_, 1)).reduceByKey(_ + _).foreach(println)//这行代码要记住
sc.stop() // //conf可以设置SparkApplication的名称,设置Spark运行的模式
// val conf = new SparkConf()
// conf.setAppName("wordcount")
// conf.setMaster("local")
// //SparkContext是通往spark集群的唯一通道
// val sc = new SparkContext(conf)
//
// val lines: RDD[String] = sc.textFile("./data/words")
// //flatMap
// val words: RDD[String] = lines.flatMap(line => {
// line.split(" ")
// })
// //KV:二元组
// val pairWords: RDD[(String, Int)] = words.map(word => {
// new Tuple2(word, 1)
// })
// //将相同的key先分组,再针对每一个组去计算,对每一个组内的value计算
// val result: RDD[(String, Int)] = pairWords.reduceByKey((v1: Int, v2: Int) => {
// v1 + v2
// })
// result.foreach(one => {
// println(one)
// })
// sc.stop() }
}

详细版本

package com.cw.scala.spark

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext} object SparkWC {
def main(args: Array[String]): Unit = { //conf可以设置SparkApplication的名称,设置Spark运行的模式
val conf = new SparkConf()
conf.setAppName("wordcount")
conf.setMaster("local")
//SparkContext是通往spark集群的唯一通道
val sc = new SparkContext(conf)
//sc.textFiles(path) 能将path里的所有文件内容读出,以文件中的每一行作为一条记录的方式
val lines: RDD[String] = sc.textFile("./data/words")
lines.foreach(println) //count:返回数据集中的元素数。会在结果计算完成后回收到Driver端。
val l: Long = lines.count()
println(l)
//take(num):返回一个包含数据集前n个元素的集合。
val strings: Array[String] = lines.take(3)
strings.foreach(println)
//first:first=take(1),返回数据集中的第一个元素。
val str: String = lines.first()
println(str) //flatMap:先map后flat。与map类似,每个输入项可以映射为0到多个输出项。
val words: RDD[String] = lines.flatMap(line => {
line.split(" ")
}) words.foreach(println) //map:将一个RDD中的每个数据项,通过map中的函数映射变为一个新的元素。
val pairWords: RDD[(String, Int)] = words.map(word => {
new Tuple2(word, 1)
}) pairWords.foreach(println) //reduceByKey:将相同的key先分组,再针对每一个组去计算,对每一个组内的value计算
val result: RDD[(String, Int)] = pairWords.reduceByKey((v1: Int, v2: Int) => {
v1 + v2
}) //foreach:循环遍历数据集中的每个元素,运行相应的逻辑。
result.foreach(println)
sc.stop() }
}
=======================运行结果========================
//textFile:能将path里的所有文件内容读出,以文件中的每一行作为一条记录的方式
hello java
hello spark
hello hadoop
hello mr
hello java
hello spark
hello scala
hello mr
//count:返回数据集中的元素数。会在结果计算完成后回收到Driver端。
8
//take(3):返回一个包含数据集前n个元素的集合。
hello java
hello spark
hello hadoop
//first:返回数据集中的第一个元素。
hello java
//flatMap:先map后flat。与map类似,每个输入项可以映射为0到多个输出项。
hello
java
hello
spark
hello
hadoop
hello
mr
hello
java
hello
spark
hello
scala
hello
mr
//map:将一个RDD中的每个数据项,通过map中的函数映射变为一个新的元素。
(hello,1)
(java,1)
(hello,1)
(spark,1)
(hello,1)
(hadoop,1)
(hello,1)
(mr,1)
(hello,1)
(java,1)
(hello,1)
(spark,1)
(hello,1)
(scala,1)
(hello,1)
(mr,1)
//reduceByKey:将相同的key先分组,再针对每一个组去计算,对每一个组内的value计算
(scala,1)
(spark,2)
(hadoop,1)
(mr,2)
(hello,8)
(java,2)

2.spark-java实现wordcount

package com.cw.java.spark;

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 org.apache.spark.api.java.function.VoidFunction;
import scala.Tuple2; import java.util.Arrays;
import java.util.Iterator; public class SparkWordCount {
public static void main(String[] args) {
SparkConf conf = new SparkConf();
conf.setMaster("local");
conf.setAppName("wc");
JavaSparkContext sc = new JavaSparkContext(conf);
//sc.textFiles(path) 能将path 里的所有文件内容读出,以文件中的每一行作为一条记录的方式,
JavaRDD<String> lines = sc.textFile("./data/words");
JavaRDD<String> words = lines.flatMap(new FlatMapFunction<String, String>() {
@Override
public Iterator<String> call(String line) throws Exception {
return Arrays.asList(line.split(" ")).iterator();
}
});
JavaPairRDD<String, Integer> pairWords = words.mapToPair(new PairFunction<String, String, Integer>() {
@Override
public Tuple2<String, Integer> call(String s) throws Exception {
return new Tuple2<>(s, 1);
}
});
/**
* new Function2<Integer, Integer, Integer>() 如在(hello,1) (hello,1) (hello,1) 第一个hello为1赋给v1,第二个hello为1赋给v2,返回结果v1+v2=2
* 下一条将2自动赋给v1,第三个hello的1赋给v2 返回v1+v2=3
*/ JavaPairRDD<String, Integer> result = pairWords.reduceByKey(new Function2<Integer, Integer, Integer>() {
@Override
public Integer call(Integer v1, Integer v2) throws Exception {
return v1 + v2;
}
}); result.foreach(new VoidFunction<Tuple2<String, Integer>>() {
@Override
public void call(Tuple2<String, Integer> tp) throws Exception {
System.out.println(tp);
}
});
sc.stop(); }
}

spark-scala-java实现wordcount的更多相关文章

  1. Spark:用Scala和Java实现WordCount

    http://www.cnblogs.com/byrhuangqiang/p/4017725.html 为了在IDEA中编写scala,今天安装配置学习了IDEA集成开发环境.IDEA确实很优秀,学会 ...

  2. Spark编程环境搭建(基于Intellij IDEA的Ultimate版本)(包含Java和Scala版的WordCount)(博主强烈推荐)

    福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号:   大数据躺过的坑      Java从入门到架构师      人工智能躺过的坑         Java全栈大联盟   ...

  3. Spark scala和java的api使用

    1.利用scala语言开发spark的worcount程序(本地运行) package com.zy.spark import org.apache.spark.rdd.RDD import org. ...

  4. Eclipse+Maven+Scala Project+Spark | 编译并打包wordcount程序

    学习用Eclipse+Maven来构建并打包一个简单的单词统计的例程. 本项目源码已托管于Github –>[Spark-wordcount] 第一步 在EclipseIDE中安装Scala插件 ...

  5. 梯度迭代树(GBDT)算法原理及Spark MLlib调用实例(Scala/Java/python)

    梯度迭代树(GBDT)算法原理及Spark MLlib调用实例(Scala/Java/python) http://blog.csdn.net/liulingyuan6/article/details ...

  6. Spark机器学习1·编程入门(scala/java/python)

    Spark安装目录 /Users/erichan/Garden/spark-1.4.0-bin-hadoop2.6 基本测试 ./bin/run-example org.apache.spark.ex ...

  7. demo1 spark streaming 接收 kafka 数据java代码WordCount示例

    1. 首先启动zookeeper windows上的安装见zk 02之 Windows安装和使用zookeeper 启动后见: 2. 启动kafka windows的安装kafka见Windows上搭 ...

  8. Spark使用Java、Scala 读取mysql、json、csv数据以及写入操作

    Spark使用Java读取mysql数据和保存数据到mysql 一.pom.xml 二.spark代码 2.1 Java方式 2.2 Scala方式 三.写入数据到mysql中 四.DataFrame ...

  9. spark之java程序开发

    spark之java程序开发 1.Spark中的Java开发的缘由: Spark自身是使用Scala程序开发的,Scala语言是同时具备函数式编程和指令式编程的一种混血语言,而Spark源码是基于Sc ...

  10. Spark(一)wordcount

    Spark(一)wordcount 一.新建一个scala项目 在maven中导入 <!-- https://mvnrepository.com/artifact/org.apache.spar ...

随机推荐

  1. 数据类型(C++)

    不同系统会有不同差异: 类型 位(byte) 范围 char 1 -128—127 or 0 – 255 unsigned char 1 0 – 255 signed int 1 -128—127 i ...

  2. luogu4281

    P4281 [AHOI2008]紧急集合 / 聚会 题目描述 欢乐岛上有个非常好玩的游戏,叫做“紧急集合”.在岛上分散有N个等待点,有N-1条道路连接着它们,每一条道路都连接某两个等待点,且通过这些道 ...

  3. Jquery 2.0+版本不支持IE8,如何解决?

    用了JQuery2.0+以后,在IE8下会报错,下面是我的方法. 先看代码: <!--[if !IE]> -->        <script src="/Scrip ...

  4. django 快速实现注册(四)

    一.创建项目与应用  #创建项目fnngj@fnngj-H24X:~/djpy$ django-admin.py startproject mysite3fnngj@fnngj-H24X:~/djpy ...

  5. [java]取当前平台默认字符集,取字符串长度

    public class TimestampLength { public static void main(String[] args) { System.out.println(java.nio. ...

  6. 7.Mahout菩萨

    1.Maout简介 2.机器学习介绍 3.Mahout算法介绍

  7. Android性能优化-电量优化

    前言 电量优化,这个名词在传统PC时代,我们基本很少听见.然而到了诺基亚时代,我们也同样很少关注.直到了移动互联的智能机时代.电量优化才被慢慢的重视起来.可能的原因如下: 移动设备,不能一直使用电源供 ...

  8. Kbengine游戏引擎-【5】用Dockerfile打包镜像kbengine

    本文是以docker为例,以ubuntu 16.04做基础镜像 kengine 1.0.0 用supervisor来管理启动 先放下目录结构图: kb--里面放的是kbengine的编译后的引擎以及d ...

  9. leetcode16 最接近的三数之和

    做了几周的hard之后,这道题居然轻易就解出来了,稍微debug了一下就ac了,算是有了一丢丢提高把: 思路 这道题因为和三数之和很像,所以充分利用双指针的思想:先排序,然后再固定一个数i,i取值从[ ...

  10. ossfs挂载oss到ECS本地并设置权限

    下载ossfs wget https://github.com/aliyun/ossfs/releases/download/v1.80.2/ossfs_1.80.2_ubuntu16.04_amd6 ...