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 ...
随机推荐
- POJ3045 Cow Acrobats
题意 Farmer John's N (1 <= N <= 50,000) cows (numbered 1..N) are planning to run away and join t ...
- 容灾管理中的RTO与RPO的关系
在灾难恢复方面,目前业界公认有三个目标值得努力.一是恢复时间,企业能忍受多长时间没有 IT,处于停业状态:二是网络多长时间能够恢复:三是业务层面的恢复.整个恢复过程中,最关键的衡量指标有两个:一个是 ...
- wordpress上传文件,插件无法建立目录(根本原因解决)
刚建立的wp网站经常遇到上传图片或者下载插件“无法建立目录”的问题,肯定是权限的问题,网上大部分解决方案都是把uploads或者 plugins权限手动改成777, 有一部分人成功了,有一部分没成功, ...
- 1.JMeter===添加响应断言
断言即Lr中的检查点,我们在进行测试时,需要对每次请求测试的返回做检验 1.以百度做案例,添加线程组==添加HTTP请求==添加查看结果树 2.在HTTP请求下添加响应断言 注:模式匹配规则,比较常用 ...
- checkstyle简单使用说明
checkstyle对检查代码规范问题的总结,虽然还不够只能,但已经比较强大.1.Cyclomatic Complexity is X (max allowed is X). 问题说明:圈复杂度过高. ...
- Ubuntu上kubeadm安装Kubernetes集群
一 创建VM 3台VM,其中一台为master节点,2台work node: 二 安装相关软件 在所有节点上运行: apt-get update apt-get install apt-transpo ...
- Spring Framework中常见的事务传播陷阱(译文)
最近看到Medium上一篇讨论Spring Framework中事务传播的文章,解释了几种常见的问题,解释的不错,这里直接翻译吧(意译为主,粗体和斜体是我自己加上的). 译文: 这是我的第一篇文章,我 ...
- ZOJ 3609 Modular Inverse(拓展欧几里得求最小逆元)
Modular Inverse Time Limit: 2 Seconds Memory Limit: 65536 KB The modular modular multiplicative ...
- Java安全 – JCE Blowfish算法报错
代码里用Blowfish算法加解密,结果jdk升到1.7后算法初始化失败 java.lang.RuntimeException: java.lang.RuntimeException: PANIC: ...
- hive默认分隔符引起的日志分割问题
Hive中的外部表 对于Hive中的外部表来说,因为表是外部的,Hive认为其并不拥有这份数据,删除该表并不会真正删除其中的数据,其中的表描述元信息会被删除掉. 对数据进行分区后,对于管理表,可以 ...