1、利用scala语言开发spark的worcount程序(本地运行)

  1. package com.zy.spark
  2.  
  3. import org.apache.spark.rdd.RDD
  4. import org.apache.spark.{SparkConf, SparkContext}
  5.  
  6. //todo:利用scala语言来实现spark的wordcount程序
  7. object WordCount {
  8. def main(args: Array[String]): Unit = {
  9. //1、创建SparkConf对象,设置appName和master local[2]表示本地采用2个线程去运行任务
  10. val sparkConf: SparkConf = new SparkConf().setAppName("WordCount").setMaster("local[2]")
  11.  
  12. //2、创建SparkContext 该对象是所有spark程序的执行入口,它会创建DAGScheduler和TaskScheduler
  13. val sc = new SparkContext(sparkConf)
  14.  
  15. //设置日志输出级别
  16. sc.setLogLevel("warn")
  17.  
  18. //3、读取数据文件
  19. val data: RDD[String] = sc.textFile("D:\\words.txt")
  20.  
  21. //4、切分每一行获取所有单词
  22. val words: RDD[String] = data.flatMap(_.split(" "))
  23.  
  24. //5、每个单词计为1
  25. val wordAndOne: RDD[(String, Int)] = words.map((_, 1))
  26.  
  27. //6、相同单词出现的所有的1累加
  28. val result: RDD[(String, Int)] = wordAndOne.reduceByKey(_ + _)
  29.  
  30. //按照单词出现的次数降序排列
  31. val sortRDD: RDD[(String, Int)] = result.sortBy(x => x._2, false)
  32.  
  33. //7、收集数据,打印输出
  34. val finalResult: Array[(String, Int)] = sortRDD.collect()
  35. finalResult.foreach(println)
  36.  
  37. //8、关闭sc
  38. sc.stop()
  39. }
  40. }

2、利用scala语言开发spark的wordcount程序(集群运行)

  1. package com.zy.spark
  2.  
  3. import org.apache.spark.{SparkConf, SparkContext}
  4. import org.apache.spark.rdd.RDD
  5.  
  6. //todo:利用scala语言开发spark的wordcount程序(集群运行)
  7. object WordCount_Online {
  8. def main(args: Array[String]): Unit = {
  9. //1、创建SparkConf对象,设置appName
  10. val sparkConf: SparkConf = new SparkConf().setAppName("WordCount_Online")
  11.  
  12. //2、创建SparkContext 该对象是所有spark程序的执行入口,它会创建DAGScheduler和TaskScheduler
  13. val sc = new SparkContext(sparkConf)
  14.  
  15. //设置日志输出级别
  16. sc.setLogLevel("warn")
  17.  
  18. //3、读取数据文件 args(0)为文件地址参数
  19. val data: RDD[String] = sc.textFile(args(0))
  20.  
  21. //4、切分每一行获取所有单词
  22. val words: RDD[String] = data.flatMap(_.split(" "))
  23.  
  24. //5、每个单词计为1
  25. val wordAndOne: RDD[(String, Int)] = words.map((_, 1))
  26.  
  27. //6、相同单词出现的所有的1累加
  28. val result: RDD[(String, Int)] = wordAndOne.reduceByKey(_ + _)
  29.  
  30. //7、把结果数据保存到hdfs上 args(1)是保存到hdfs的目录参数
  31. result.saveAsTextFile(args(1))
  32.  
  33. //8、关闭sc
  34. sc.stop()
  35. }
  36.  
  37. }

最后打成jar包 到集群上执行

  1. 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程序(本地运行)

  1. package com.zy.spark;
  2.  
  3. import org.apache.spark.SparkConf;
  4. import org.apache.spark.api.java.JavaPairRDD;
  5. import org.apache.spark.api.java.JavaRDD;
  6. import org.apache.spark.api.java.JavaSparkContext;
  7. import org.apache.spark.api.java.function.FlatMapFunction;
  8. import org.apache.spark.api.java.function.Function2;
  9. import org.apache.spark.api.java.function.PairFunction;
  10. import scala.Tuple2;
  11.  
  12. import java.util.Arrays;
  13. import java.util.Iterator;
  14. import java.util.List;
  15.  
  16. //todo:利用java语言开发spark的wordcount程序(本地运行)
  17. public class WordCount_Java {
  18. public static void main(String[] args) {
  19. //1、创建SparkConf对象
  20. SparkConf sparkConf = new SparkConf().setAppName("WordCount_Java").setMaster("local[2]");
  21.  
  22. //2、创建JavaSparkContext对象
  23. JavaSparkContext jsc = new JavaSparkContext(sparkConf);
  24.  
  25. //3、读取数据文件
  26. JavaRDD<String> data = jsc.textFile("D:\\words.txt");
  27.  
  28. //4、切分每一行获取所有的单词
  29. JavaRDD<String> words = data.flatMap(new FlatMapFunction<String, String>() {
  30. public Iterator<String> call(String line) throws Exception {
  31. String[] words = line.split(" ");
  32. return Arrays.asList(words).iterator();
  33. }
  34. });
  35.  
  36. //5、每个单词计为1
  37. JavaPairRDD<String, Integer> wordAndOne = words.mapToPair(new PairFunction<String, String, Integer>() {
  38. public Tuple2<String, Integer> call(String word) throws Exception {
  39. return new Tuple2<String, Integer>(word, 1);
  40. }
  41. });
  42.  
  43. //6、相同单词出现1累加
  44. JavaPairRDD<String, Integer> result = wordAndOne.reduceByKey(new Function2<Integer, Integer, Integer>() {
  45. public Integer call(Integer v1, Integer v2) throws Exception {
  46. return v1 + v2;
  47. }
  48. });
  49.  
  50. //按照单词出现的次数降序排列 (单词,次数)------>(次数,单词).sortByKey------->(单词,次数)
  51.  
  52. JavaPairRDD<Integer, String> reverseRDD = result.mapToPair(new PairFunction<Tuple2<String, Integer>, Integer, String>() {
  53. public Tuple2<Integer, String> call(Tuple2<String, Integer> t) throws Exception {
  54. return new Tuple2<Integer, String>(t._2, t._1);
  55. }
  56. });
  57.  
  58. JavaPairRDD<String, Integer> sortedRDD = reverseRDD.sortByKey(false).mapToPair(new PairFunction<Tuple2<Integer, String>, String, Integer>() {
  59. public Tuple2<String, Integer> call(Tuple2<Integer, String> t) throws Exception {
  60. return new Tuple2<String, Integer>(t._2, t._1);
  61. }
  62. });
  63.  
  64. //7、收集数据打印输出
  65. List<Tuple2<String, Integer>> finalResult = sortedRDD.collect();
  66. for (Tuple2<String, Integer> tuple : finalResult) {
  67. System.out.println("单词:" + tuple._1 + " 次数:" + tuple._2);
  68. }
  69.  
  70. //8、关闭jsc
  71. jsc.stop();
  72. }
  73. }

Spark scala和java的api使用的更多相关文章

  1. Spark:用Scala和Java实现WordCount

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

  2. 编写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 ...

  3. UserView--第二种方式(避免第一种方式Set饱和),基于Spark算子的java代码实现

      UserView--第二种方式(避免第一种方式Set饱和),基于Spark算子的java代码实现   测试数据 java代码 package com.hzf.spark.study; import ...

  4. UserView--第一种方式set去重,基于Spark算子的java代码实现

    UserView--第一种方式set去重,基于Spark算子的java代码实现 测试数据 java代码 package com.hzf.spark.study; import java.util.Ha ...

  5. Apache Spark 2.0三种API的传说:RDD、DataFrame和Dataset

    Apache Spark吸引广大社区开发者的一个重要原因是:Apache Spark提供极其简单.易用的APIs,支持跨多种语言(比如:Scala.Java.Python和R)来操作大数据. 本文主要 ...

  6. Scala IDEA for Eclipse里用maven来创建scala和java项目代码环境(图文详解)

    这篇博客 是在Scala IDEA for Eclipse里手动创建scala代码编写环境. Scala IDE for Eclipse的下载.安装和WordCount的初步使用(本地模式和集群模式) ...

  7. 用maven来创建scala和java项目代码环境(图文详解)(Intellij IDEA(Ultimate版本)、Intellij IDEA(Community版本)和Scala IDEA for Eclipse皆适用)(博主推荐)

    不多说,直接上干货! 为什么要写这篇博客? 首先,对于spark项目,强烈建议搭建,用Intellij IDEA(Ultimate版本),如果你还有另所爱好尝试Scala IDEA for Eclip ...

  8. 三、使用maven创建scala工程(scala和java混一起)

    本文先叙述如何配置eclipse中maven+scala的开发环境,之后,叙述如何实现spark的本地运行.最后,成功运行scala编写的spark程序. 刚开始我的eclipse+maven环境是配 ...

  9. Scala For Java的一些参考

          变量 String yourPast = "Good Java Programmer"; val yourPast : String = "Good Java ...

随机推荐

  1. POJ3045 Cow Acrobats

    题意 Farmer John's N (1 <= N <= 50,000) cows (numbered 1..N) are planning to run away and join t ...

  2. 容灾管理中的RTO与RPO的关系

    在灾难恢复方面,目前业界公认有三个目标值得努力.一是恢复时间,企业能忍受多长时间没有 IT,处于停业状态:二是网络多长时间能够恢复:三是业务层面的恢复.整个恢复过程中,最关键的衡量指标有两个:一个是 ...

  3. wordpress上传文件,插件无法建立目录(根本原因解决)

    刚建立的wp网站经常遇到上传图片或者下载插件“无法建立目录”的问题,肯定是权限的问题,网上大部分解决方案都是把uploads或者 plugins权限手动改成777, 有一部分人成功了,有一部分没成功, ...

  4. 1.JMeter===添加响应断言

    断言即Lr中的检查点,我们在进行测试时,需要对每次请求测试的返回做检验 1.以百度做案例,添加线程组==添加HTTP请求==添加查看结果树 2.在HTTP请求下添加响应断言 注:模式匹配规则,比较常用 ...

  5. checkstyle简单使用说明

    checkstyle对检查代码规范问题的总结,虽然还不够只能,但已经比较强大.1.Cyclomatic Complexity is X (max allowed is X). 问题说明:圈复杂度过高. ...

  6. Ubuntu上kubeadm安装Kubernetes集群

    一 创建VM 3台VM,其中一台为master节点,2台work node: 二 安装相关软件 在所有节点上运行: apt-get update apt-get install apt-transpo ...

  7. Spring Framework中常见的事务传播陷阱(译文)

    最近看到Medium上一篇讨论Spring Framework中事务传播的文章,解释了几种常见的问题,解释的不错,这里直接翻译吧(意译为主,粗体和斜体是我自己加上的). 译文: 这是我的第一篇文章,我 ...

  8. ZOJ 3609 Modular Inverse(拓展欧几里得求最小逆元)

    Modular Inverse Time Limit: 2 Seconds      Memory Limit: 65536 KB The modular modular multiplicative ...

  9. Java安全 – JCE Blowfish算法报错

    代码里用Blowfish算法加解密,结果jdk升到1.7后算法初始化失败 java.lang.RuntimeException: java.lang.RuntimeException: PANIC: ...

  10. hive默认分隔符引起的日志分割问题

    Hive中的外部表 对于Hive中的外部表来说,因为表是外部的,Hive认为其并不拥有这份数据,删除该表并不会真正删除其中的数据,其中的表描述元信息会被删除掉.   对数据进行分区后,对于管理表,可以 ...