引入: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. js 获取滚动条的高度

    function getScrollTop() { var scroll_top = 0; if (document.documentElement && document.docum ...

  2. 【转载】C++ STL priority_queue用法

    priority_queue 对于基本类型的使用方法相对简单.他的模板声明带有三个参数,priority_queue<Type, Container, Functional> Type 为 ...

  3. Python地理信息数据可视化

    地图 基础铺垫 定义 地图(map):是指按一定的比例运用符号.颜色.文字标记等描绘显示地球表面的自然地理.行政区域.社会经济状况的图形. 地图绘制步骤 绘制需要展示的地图,获取地图对象,获取每个区域 ...

  4. Linux查看进程的启动路径——pwdx

    想要找到transfer的启动路径. 一般是ps -ef | grep keyward 但是这个刚好是没有用绝对路径执行. 再用pwdx  pid获得

  5. ew做代理 进一步内网渗透

    0x00 前言 最近搞站的时候有内网穿透的需求,大佬向我推荐了EW,本文模拟一个攻击场景对Earthworm的使用方法做一个简单的介绍.其实相应的内容EW的官网已经说得很详细了,我这里纯粹是作为个人笔 ...

  6. .net 数据导出

    安装npoi,下面是具体的C#代码: public static XSSFWorkbook BuildWorkbook(DataTable dt) { var book = new XSSFWorkb ...

  7. moveUp()

    这个函数内容有点多,想讲一下大概思路: 向上移有两种情况1.前面为空白 这种情况有两个步骤 (1)将人当前的位置设置为空白(0), (2)再讲人前面的位置设置为人(2)2.前面为箱子 当前面为箱子时有 ...

  8. 搭建Django项目虚拟环境(Windows系统下)

    一.安装virtualenv 我们可以使用正式的Python环境中的pip进行安装.进入cmd界面,运行“ pip install virtualenv ”,完成安装后,可以运行“ where vir ...

  9. iommu是干什么的呢?

    答: 如普通的mmu,将虚拟内存地址转换为物理地址,不同的是,iommu是将设备访问的虚拟地址转换为物理地址

  10. Android判断view在屏幕可见

    /** * 判断当前view是否在屏幕可见 */public static boolean getLocalVisibleRect(Context context, View view, int of ...