nebula-algorithm配置流程学习【2】——Spark入门项目WordCount

581 阅读2分钟

学习目标

  • Windows+IDEA开发Spark词数统计项目
  • IDEA直连服务器及文件传输
  • 项目打包及Spark任务运行

项目背景

1.本地同样配置好了java以及scala语言,版本与服务器一致
2.本地已经配置好了Maven
3.学习了scala基本数据类型和基本语法
4.已经完成服务器端Spark的部署(参考上文)

nebula-algorithm配置流程学习【1】——Spark安装及配置 - 掘金 (juejin.cn)

实现步骤

前期插件准备

在IDEA刚打开的界面,进入Plugin,搜Scala,安装 重启 IDEA

image.png

项目创建

创建Maven项目(这里我创建了一个wordcount的项目)

在pom依赖里添加本次需要的spark和scala版本。在上一篇文章中,我在服务器安装的是Spark 2.4.4以及Scala 2.11.12,所以,仍然采用相同版本

image.png

开发环境配置

Maven加载包后右键项目,选择添加框架

image.png

image.png

创建文件

在目录 /src/main/java 中创建Scala Object

image.png

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

object workout {
  def main(args: Array[String]): Unit = {
    // 连接
    val sparConf: SparkConf = new SparkConf().setMaster("local").setAppName("WordCount")
    val sc = new SparkContext(sparConf)
    // 读文件,按行
    val lines: RDD[String] = sc.textFile(path = "data")
    val words: RDD[String] = lines.flatMap(line => line.split(" "))
    // 分词分组,对分词标记出1,以便后续进行聚合
    val wordToOne: RDD[(String, Int)] = words.map(word => (word, 1))
    // 对分组后数据进行转换,按照(word, 1)中的第一个元素word进行分组,形成{hello:[(hello,1),(hello,1)], scala:[(scala,1)]}这种格式
    val wordToCount: RDD[(String, Int)] = wordToOne.reduceByKey(_ + _)
    // 采集结果
    val array: Array[(String, Int)] = wordToCount.collect()
    array.foreach(println)
    sc.stop()
  }
}

打包执行

打包为jar包

image.png

image.png

image.png

image.png

随后点击build,选择Artifact build,将生成的jar包放入服务器指定位置(随意,data文件夹的位置对就ok)

image.png

上传执行

命令行进入指定目录,执行如下命令:(端口号这里,Master的配置方式请见上文配置Spark处),随后可以看到打印结果

spark-submit --master spark://VM-20-17-centos:7077 --class wordcount ./wordcount.jar

image.png

image.png

image.png

Spark任务执行过程理解

所以,包括spark官方自己的安装包里的example在内,jar包其实就是一个算法库,本身应该是写好了解析spark-submit时输入的其他参数的函数,随后去执行算法的。那么,nebula-algorithm应该也是一个算法包,到时候指定好参数,图空间,就可以进行图计算了!