Spark scala和java的api使用
1、利用scala语言开发spark的worcount程序(本地运行)
package com.zy.spark import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext} //todo:利用scala语言来实现spark的wordcount程序
object WordCount {
def main(args: Array[String]): Unit = {
//1、创建SparkConf对象,设置appName和master local[2]表示本地采用2个线程去运行任务
val sparkConf: SparkConf = new SparkConf().setAppName("WordCount").setMaster("local[2]") //2、创建SparkContext 该对象是所有spark程序的执行入口,它会创建DAGScheduler和TaskScheduler
val sc = new SparkContext(sparkConf) //设置日志输出级别
sc.setLogLevel("warn") //3、读取数据文件
val data: RDD[String] = sc.textFile("D:\\words.txt") //4、切分每一行获取所有单词
val words: RDD[String] = data.flatMap(_.split(" ")) //5、每个单词计为1
val wordAndOne: RDD[(String, Int)] = words.map((_, 1)) //6、相同单词出现的所有的1累加
val result: RDD[(String, Int)] = wordAndOne.reduceByKey(_ + _) //按照单词出现的次数降序排列
val sortRDD: RDD[(String, Int)] = result.sortBy(x => x._2, false) //7、收集数据,打印输出
val finalResult: Array[(String, Int)] = sortRDD.collect()
finalResult.foreach(println) //8、关闭sc
sc.stop()
}
}
2、利用scala语言开发spark的wordcount程序(集群运行)
package com.zy.spark import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.rdd.RDD //todo:利用scala语言开发spark的wordcount程序(集群运行)
object WordCount_Online {
def main(args: Array[String]): Unit = {
//1、创建SparkConf对象,设置appName
val sparkConf: SparkConf = new SparkConf().setAppName("WordCount_Online") //2、创建SparkContext 该对象是所有spark程序的执行入口,它会创建DAGScheduler和TaskScheduler
val sc = new SparkContext(sparkConf) //设置日志输出级别
sc.setLogLevel("warn") //3、读取数据文件 args(0)为文件地址参数
val data: RDD[String] = sc.textFile(args(0)) //4、切分每一行获取所有单词
val words: RDD[String] = data.flatMap(_.split(" ")) //5、每个单词计为1
val wordAndOne: RDD[(String, Int)] = words.map((_, 1)) //6、相同单词出现的所有的1累加
val result: RDD[(String, Int)] = wordAndOne.reduceByKey(_ + _) //7、把结果数据保存到hdfs上 args(1)是保存到hdfs的目录参数
result.saveAsTextFile(args(1)) //8、关闭sc
sc.stop()
} }
最后打成jar包 到集群上执行
spark-submit --master spark://node1:7077 --class cn.itcast.spark.WordCount_Online --executor-memory 1g --total-executor-cores 2 original-spark_xxx-1.0-SNAPSHOT.jar /words.txt /out
3、利用java语言开发spark的wordcount程序(本地运行)
package com.zy.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 scala.Tuple2; import java.util.Arrays;
import java.util.Iterator;
import java.util.List; //todo:利用java语言开发spark的wordcount程序(本地运行)
public class WordCount_Java {
public static void main(String[] args) {
//1、创建SparkConf对象
SparkConf sparkConf = new SparkConf().setAppName("WordCount_Java").setMaster("local[2]"); //2、创建JavaSparkContext对象
JavaSparkContext jsc = new JavaSparkContext(sparkConf); //3、读取数据文件
JavaRDD<String> data = jsc.textFile("D:\\words.txt"); //4、切分每一行获取所有的单词
JavaRDD<String> words = data.flatMap(new FlatMapFunction<String, String>() {
public Iterator<String> call(String line) throws Exception {
String[] words = line.split(" ");
return Arrays.asList(words).iterator();
}
}); //5、每个单词计为1
JavaPairRDD<String, Integer> wordAndOne = words.mapToPair(new PairFunction<String, String, Integer>() {
public Tuple2<String, Integer> call(String word) throws Exception {
return new Tuple2<String, Integer>(word, 1);
}
}); //6、相同单词出现1累加
JavaPairRDD<String, Integer> result = wordAndOne.reduceByKey(new Function2<Integer, Integer, Integer>() {
public Integer call(Integer v1, Integer v2) throws Exception {
return v1 + v2;
}
}); //按照单词出现的次数降序排列 (单词,次数)------>(次数,单词).sortByKey------->(单词,次数) JavaPairRDD<Integer, String> reverseRDD = result.mapToPair(new PairFunction<Tuple2<String, Integer>, Integer, String>() {
public Tuple2<Integer, String> call(Tuple2<String, Integer> t) throws Exception {
return new Tuple2<Integer, String>(t._2, t._1);
}
}); JavaPairRDD<String, Integer> sortedRDD = reverseRDD.sortByKey(false).mapToPair(new PairFunction<Tuple2<Integer, String>, String, Integer>() {
public Tuple2<String, Integer> call(Tuple2<Integer, String> t) throws Exception {
return new Tuple2<String, Integer>(t._2, t._1);
}
}); //7、收集数据打印输出
List<Tuple2<String, Integer>> finalResult = sortedRDD.collect();
for (Tuple2<String, Integer> tuple : finalResult) {
System.out.println("单词:" + tuple._1 + " 次数:" + tuple._2);
} //8、关闭jsc
jsc.stop();
}
}
Spark scala和java的api使用的更多相关文章
- Spark:用Scala和Java实现WordCount
http://www.cnblogs.com/byrhuangqiang/p/4017725.html 为了在IDEA中编写scala,今天安装配置学习了IDEA集成开发环境.IDEA确实很优秀,学会 ...
- 编写Spark的WordCount程序并提交到集群运行[含scala和java两个版本]
编写Spark的WordCount程序并提交到集群运行[含scala和java两个版本] 1. 开发环境 Jdk 1.7.0_72 Maven 3.2.1 Scala 2.10.6 Spark 1.6 ...
- UserView--第二种方式(避免第一种方式Set饱和),基于Spark算子的java代码实现
UserView--第二种方式(避免第一种方式Set饱和),基于Spark算子的java代码实现 测试数据 java代码 package com.hzf.spark.study; import ...
- UserView--第一种方式set去重,基于Spark算子的java代码实现
UserView--第一种方式set去重,基于Spark算子的java代码实现 测试数据 java代码 package com.hzf.spark.study; import java.util.Ha ...
- Apache Spark 2.0三种API的传说:RDD、DataFrame和Dataset
Apache Spark吸引广大社区开发者的一个重要原因是:Apache Spark提供极其简单.易用的APIs,支持跨多种语言(比如:Scala.Java.Python和R)来操作大数据. 本文主要 ...
- Scala IDEA for Eclipse里用maven来创建scala和java项目代码环境(图文详解)
这篇博客 是在Scala IDEA for Eclipse里手动创建scala代码编写环境. Scala IDE for Eclipse的下载.安装和WordCount的初步使用(本地模式和集群模式) ...
- 用maven来创建scala和java项目代码环境(图文详解)(Intellij IDEA(Ultimate版本)、Intellij IDEA(Community版本)和Scala IDEA for Eclipse皆适用)(博主推荐)
不多说,直接上干货! 为什么要写这篇博客? 首先,对于spark项目,强烈建议搭建,用Intellij IDEA(Ultimate版本),如果你还有另所爱好尝试Scala IDEA for Eclip ...
- 三、使用maven创建scala工程(scala和java混一起)
本文先叙述如何配置eclipse中maven+scala的开发环境,之后,叙述如何实现spark的本地运行.最后,成功运行scala编写的spark程序. 刚开始我的eclipse+maven环境是配 ...
- Scala For Java的一些参考
变量 String yourPast = "Good Java Programmer"; val yourPast : String = "Good Java ...
随机推荐
- 用Python做图像处理
转自:http://blog.csdn.net/gzlaiyonghao/article/details/1852726 最近在做一件比较 evil 的事情——验证码识别,以此来学习一些新的技能.因 ...
- BZOJ4565 [Haoi2016]字符合并
题意 有一个长度为\(n\)的\(01\)串,你可以每次将相邻的\(k\)个字符合并,得到一个新的字符并获得一定分数.得到的新字符和分数由这\(k\)个字符确定.你需要求出你能获得的最大分数. \(n ...
- pyqtree
pyqtree module API Documentation Classes class Index The top spatial index to be created by the user ...
- Jetty小计,比之tomcat调试还是不方便
不需要额外的工程支持,不需要硬盘中有tomcat之类的额外文件 Jetty的Debug:右键Debug as... Maven Builder Jetty相关的配置文件如下: <profiles ...
- bzoj 3994 [SDOI2015]约数个数和——反演
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3994 \( d(i*j)=\sum\limits_{x|i}\sum\limits_{y|j ...
- rails里面添加妹子ui
妹子ui看起来很不错,以为在rails里面添加自定义的css和js和平时一样,结果可想而知,不过弄完以后发现还是比较简单的,这里记录一下 妹子ui需要加载的css和js如下 http://cdn.am ...
- cocos2d js的一些tip
cocos2d-js-v3.2-rc0 cc.director.end();//退出app cc.Application.getInstance().openURL("http://www. ...
- 算法题:求一个序列S中所有包含T的子序列(distinct sub sequence)
题: 给定一个序列S以及它的一个子序列T,求S的所有包含T的子序列.例: S = [1, 2, 3, 2, 4] T = [1, 2, 4] 则S的所有包含T的子序列为: [1, 2, 3, 2, 4 ...
- (转)Inno Setup入门(六)——在程序目录下创建文件夹
本文转载自:http://blog.csdn.net/yushanddddfenghailin/article/details/17250789 创建文件夹可以使用[dirs]段实现,代码如下: [s ...
- Java-Runoob-高级教程:Java 泛型
ylbtech-Java-Runoob-高级教程:Java 泛型 1.返回顶部 1. Java 泛型 Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检 ...