一、安装JDK(具体安装省略)

二、安装Scala(具体安装省略)

三、安装IDEA

  1、打开后会看到如下,然后点击OK使用IDEA开发及测试Spark的环境搭建及简单测试

使用IDEA开发及测试Spark的环境搭建及简单测试

 2、点击Next:Default plugins,进入以下页面:

使用IDEA开发及测试Spark的环境搭建及简单测试

  3、点击Scala的Install安装(确保联网),等待完成后,出现

使用IDEA开发及测试Spark的环境搭建及简单测试

 

  4、点击Create New Project进入主页面:打开后新建一个名为WordCount的工程(这个应该都知道吧File-->New-->Scala Project),建立完成后,再点击File-->Project Structure-->Libraries,然后点击+号,找到自己的spark包(spark-assembly-1.0.0-hadoop1.0.4.jar,然后点击OK)(这一步很重要)

使用IDEA开发及测试Spark的环境搭建及简单测试

  5、此时所有的包依赖都导入成功,然后新建一个Scala类,即可开发Spark

四、写程序

  下面给出史上最详细的程序:

  1、如果想要在本地上搞Spark的话:

 1 package com.df.spark
 2 import org.apache.spark.SparkConf
 3 import org.apache.spark.SparkContext
 4 import org.apache.spark.SparkContext._
 5 import org.apache.spark.rdd.RDD
 6 /**
 7  * 使用Scala开发集群运行的Spark WordCount程序
 8  * @author liuzhongfeng
 9  */
10 object WordCount_Cluster {
11   def main(args: Array[String]){
12     /**
13      * 第一步:创建Spark的配置对象SparkConf,设置Spark程序的运行时的配置信息
14      * 例如说通过setMaster来设置程序要链接的Spark集群的Master的URL,如果设置为local,
15      * 则代表Spark程序在本地运行,特别适合机器配置条件差的初学者。
16      */
17     val conf=new SparkConf()//创建SparkConf对象
18     conf.setAppName("My First Spark App!")//设置应用程序的名称,在程序运行的监控界面可以看到名称
19     conf.setMaster("spark://cMaster-spark:7077")//程序此时运行在Spark集群
20     
21     /**
22      * 第二步:创建SparkContext对象,
23      * SparkContext是Spark程序所有功能的唯一入口,无论是采用Scala、Java、Python、R等都必须有一个SparkContext
24      * SparkContext的核心作用:初始化Spark应用程序运行所需要的核心组件,包括DAGScheduler、TaskScheduler、SchedulerBacken
25      * 同时还会负责Spark程序往Master注册程序等
26      * SparkContext是整个Spark应用程序中至关重要的一个对象
27      */
28     val sc=new SparkContext(conf)//通过创建SparkContext对象,通过传入SparkConf实例来定制Spark运行的具体参数和配置信息
29     
30     /**
31      * 第三步:根据具体的数据来源(HDFS、HBase、Local FS、S3)通过SparkContext来创建RDD
32      * RDD的创建基本有三种方式:根据外部的数据来源(例如HDFS)、根据Scala集合、由其他的RDD操作
33      * 数据会被RDD划分称为一些列的Partitions,分配到每个Partition的数据属于一个Task的处理范畴
34      */
35    // val lines: RDD[String]=sc.textFile("H://下载//linux软件包//linux-spark的文件//spark//spark-1.0.0-bin-hadoop1//README.md", 1)
36     //读取本地文件并设置为一个Partition
37     //val lines=sc.textFile("H://下载//linux软件包//linux-spark的文件//spark//spark-1.0.0-bin-hadoop1//README.md", 1)
38     val lines=sc.textFile("/in", 1)
39     /**
40      * 第四步:对初始的RDD进行Transformation级别的处理,例如map、filter等高阶函数的编程,来进行具体的数据计算
41      * 第4.1步:将每一行的字符串拆分成单个的单词 
42      */
43     val words=lines.flatMap { line => line.split(" ")}//对每一行的字符串进行单词切分,并把所有行的切分结果通过flat合并成一个大的单词集合   
44     /**
45      * 第四步:对初始的RDD进行Transformation级别的处理,例如map、filter等高阶函数的编程,来进行具体的数据计算
46      * 第4.2步:在单词切分的基础上,对每个单词实例的计数为1,也就是word=>(word,1)
47      */
48     val pairs=words.map { word => (word,1) }
49     /**
50      * 第四步:对初始的RDD进行Transformation级别的处理,例如map、filter等高阶函数的编程,来进行具体的数据计算
51      * 第4.3步:在每个单词实例计数为1的基础之上统计每个单词在文件中出现的总次数
52      */
53     val wordCounts=pairs.reduceByKey(_+_)//对相同的Key,进行Value的累计(包括Local和Reducer级别同时Reduce)
54     wordCounts.collect.foreach(wordNumberPair=>println(wordNumberPair._1+" : "+wordNumberPair._2))
55     sc.stop()
56   }  
57 }
View Code

相关文章:

  • 2021-08-29
  • 2021-06-18
  • 2021-12-07
  • 2021-07-25
  • 2021-08-31
  • 2021-09-29
  • 2022-02-02
  • 2021-11-19
猜你喜欢
  • 2021-09-05
  • 2021-06-08
  • 2021-09-20
  • 2021-10-09
  • 2021-04-23
  • 2021-12-15
相关资源
相似解决方案