IntelliJ IDEA开发Spark案例之WordCount

版权声明:原创不易,转载请标明出处谢谢。 https://blog.csdn.net/shaock2018/article/details/88869113

0x00 教程内容

  1. 新建Maven项目
  2. 编写WordCount代码
  3. 校验结果

实验前提:
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 总结

  1. 本教程比较简单,实现了windows本地的WordCount例子,需要学习Scala编程语言
  2. 编写Scala语言,还需要在IDEA里面安装好Scala插件
  3. 思考题:我们的统计结果,为什么是:
    (hi,1)
    (shao,3)
    (hello,2)
    (nai,2)
    (yi,2)
    不是应该按照字母的顺序排序吗?!

作者简介:邵奈一
大学大数据讲师、大学市场洞察者、专栏编辑
公众号、微博、CSDN邵奈一

复制粘贴玩转大数据系列专栏已经更新完成,请跳转学习!

猜你喜欢

转载自blog.csdn.net/shaock2018/article/details/88869113