Spark作业与MapReduce作业同样可以先在本地发测试,本地执行模式与集提交模式,代码的功能相同,因此本书多数采用本地发模式。讲解使用IDEA工具发WordCount单词计数程序的相关步骤。
1.创建Maven,新建资源文件夹
创建一个Maven工程,名为“spark_chapter02”。创建好后,在main和test目录下分别创建一个名称为scala的文件夹,创建好的目录结构如图1所示。
图1Spark_chapter02目录结构
在图1中,选中main目录下的scala文件夹,单击右键选择【MarkDirectoryas】→【SourcesRoot】,将文件夹标记为资源文件夹类型;同样的,选中test目录下的scala文件夹,单击右键选择【MarkDirectoryas】→【TestSourcesRoot】将文件夹标记为测试资源文件夹类型。其中,资源文件夹中存放源码文件,测试文件夹中存放发中测试的源码文件。
2.Spark相关依赖、打包件
Maven一个管理工具,虽然们刚才创建好了,但却不能识别Spark类,因此,们需要将Spark相关的依赖到Maven中。打l文件,在该文件中的依赖如下所示:
<properties>
<scala.version>2.11.8</scala.version>
<hadoop.version>2.7.4</hadoop.version>
<spark.version>2.3.2</spark.version>
</properties>
<dependencies>
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>${scala.version}</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>${spark.version}</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>${hadoop.version}</version>
</dependency>
</dependencies>
在上述配置参数片段中,标签用来设置所需依赖的版本号,其中在标签中了Scala、Hadoop和Spark相关的依赖,设置完毕后,相关Jar文件会被自动加载到中。
3.编写代码,查看结果
在main目录下的scala文件夹中,创建WordCount.scala文件用于词频统计,代码如文件1所示。
文件1WordCount.scala
importorg.RDD
importorg.apache.spark.{SparkConf,SparkContext}
//编写单词计数
objectWordCount{
defmain(args:Array[String]):Unit={
//1.创建SparkConf对象,设置appName和Master
valsparkconf=new
SparkConf().setAppName("WordCount").setMaster("local[2]")
//2.创建SparkContext对象,它所有任务计算的源头,
//它会创建DAGScheduler和TaskScheduler
valsparkContext=newSparkContext(sparkconf)
//3.读取数据文件,RDD可以简单的理解为一个集合
//集合中存放的元素String类型
valdata:RDD[String]=
File("D:\\word\\")
//4.切分每一行,获取所有的单词
valwords:RDD[String]=data.flatMap(_.split(""))
//5.每个单词记为1,转换为(单词,1)
valwordAndOne:RDD[(String,Int)]=words.map(x=>(x,1))
//6.相同单词汇总,前一个下划线表示累加数据,后一个下划线表示新数据
valresult:RDD[(String,Int)]=duceByKey(_+_)
//7.收集打印结果数据
valfinalResult:Array[(String,Int)]=llect()
Buffer)
//8.关闭sparkContext对象
idea开发安卓app教程sparkContext.stop()
}
}
上述代码中,第7-11行代码创建SparkContext对象并通过SparkConf对象设置配置参数,其中Master为本地模式,即可以在本地直接运行;第14-24行代码中,读取数据文件,将获得的数据按照空格切分,将每个单词记作(单词,1),之后若出现相同的单词就将次数累加,最终打印数据结果;第26行代码表示关闭SparkContext对象资源。执行代码成功后,在控制台可以查看输出结果,如图2所示。
图2IDEA发WordCount
从图2可以看出,文本中的单词已经成功统计了出现的次数。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论