IntelliJ IDEA开发Spark案例之WordCount
教程目录
0x00 教程内容
- 新建Maven项目
- 编写WordCount代码
- 校验结果
实验前提:
a. 安装好了windows本地的scala
b. 安装好了IDEA的scala插件
c. 安装好了JDK与Maven
0x01 新建Maven项目
1. 新建Maven项目
a. 新建一个Maven项目,选择好JDK,然后其他的默认或者自己决定
2. 项目配置
a. 设置编写scala代码的文件夹
打开src/main,建一个scala文件夹(与java同级)
b. 标记scala文件夹为资源文件夹
右击scala文件夹,选择Mark Directory as
,选择第一个Sources Root
,然后文件夹变成了蓝色。
c. 将Language level改为8
(我使用的JDK为8,所以为8,如果是7则用7)
点击IDEA右上角放大镜左边的按钮(Project Structure
),或者快捷键ctrl + shift + alt + S ,点击Modules
:
d. 引入scala的SDK
3. 引入项目的依赖
a. 在pom.xml文件中添加依赖并Reimport
一下:
<dependencies>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.2.0</version>
</dependency>
</dependencies>
0x02 编写WordCount代码
1. 新建包
a. 在scala文件夹建com.shaonaiyi
包
2. 编写scala代码
a. 右击包名,选择New一个Scala Class(如果没有引入Scala的SDK,是建不了的)
b. 完整代码:
package com.shaonaiyi
import org.apache.spark.{SparkConf, SparkContext}
/**
* @Auther: 邵奈一
* @Date: 2019/03/28 下午 3:16
* @Description: IntelliJ IDEA开发Spark案例之WordCount
*/
object WordCountLocal {
def main(args: Array[String]): Unit = {
val conf = new SparkConf()
conf.setAppName("WordCountLocal")
conf.setMaster("local")
val sparkContext = new SparkContext(conf)
val textFileRDD = sparkContext.textFile("src/main/resources/word.txt")
val wordRDD = textFileRDD.flatMap(line => line.split(" "))
val pairWordRDD = wordRDD.map(word => (word, 1))
val wordCountRDD = pairWordRDD.reduceByKey((a, b) => a + b)
wordCountRDD.saveAsTextFile("src/main/resources/wordcount")
}
}
0x03 校验结果
1. 统计文件准备
a. 新建word.txt文件放于src/main/resources/
路径下
shao shao shao
nai yi yi nai
hello hello hi
b. 如果没有错误的话,结果应该是:
shao=>3次,
nai=>2次,
yi=>2次,
hello=>3次,
hi=>1次,
2. 统计结果
0xFF 总结
- 本教程比较简单,实现了windows本地的WordCount例子,需要学习Scala编程语言
- 编写Scala语言,还需要在IDEA里面安装好Scala插件
- 思考题:我们的统计结果,为什么是:
(hi,1)
(shao,3)
(hello,2)
(nai,2)
(yi,2)
不是应该按照字母的顺序排序吗?!
作者简介:邵奈一
大学大数据讲师、大学市场洞察者、专栏编辑
公众号、微博、****:邵奈一
复制粘贴玩转大数据系列专栏已经更新完成,请跳转学习!