引入: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. 洛谷 P2832 行路难

    题面 这个最短路有点special,会有疲劳度的加成效应,这个时候应该怎么办呢? 难就难在,如果走一条路比另一条路长,但是用的边少,那么这条路并不一定就更差. 我们要是能解决这个问题,就可以做出本题. ...

  2. spring boot+idea实现程序热部署

    pring为开发者提供了一个名为spring-boot-devtools的模块来使Spring Boot应用支持热部署,提高开发者的开发效率,无需手动重启Spring Boot应用. devtools ...

  3. Little Prince

    You know — one loves the sunset, when one is so sad... 你知道的—当一个人情绪低落的时候,他会格外喜欢看日落...... If someone l ...

  4. 【Redis 向Redis中批量导入mysql中的数据(亲自测试)】

    转自:https://blog.csdn.net/kenianni/article/details/84910638 有改动,仅供个人学习 问题提出:缓存的冷启动问题 应用系统新版本上线,这时候 re ...

  5. csp-s模拟80(b)

    头一次中午考试,上来一看三个题目以为是三个板子,但一看数据范围就不对劲. T1: 考场上的想法是:找出循环节,对于数组一头一尾的不在循环节中的,维护出以某数结尾/开头的上升序列,对于中间的循环部分只取 ...

  6. Leetcode题目121.买卖股票的最佳时机(简单)

    题目描述: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润. 注意你不能在买入股票前卖出 ...

  7. Linux设备驱动程序 之 原子操作

    原子整数操作 当共享资源是一个简单的整数值时,可以使用内核提供的一种原子的整数类型,称为atomic_t,定义在<linux/types.h>中,操作定义在<linux/atomic ...

  8. 使用create-react-app创建项目(二)——引入ant方法(一)

    扩展项目(需要创建git默认文件) 具体步骤如下:       a.git init       b.git add .       c.git commit -m "..." n ...

  9. WinPEter制作U盘启动盘

    一.图说WinPE启动U盘的制作 1.首先将U盘插入电脑的USB接口(重要提示:制作过程U盘会被格式化,注意备份资料): 2.解压下载的WinPEU.rar文件: 3.在WinPEU.rar解压目录打 ...

  10. Python locust性能测试框架模板

    locust框架模板 from locust import HttpLocust, TaskSet, task import Queue class UserBehavior(TaskSet): de ...