学习目标
- Windows+IDEA开发Spark词数统计项目
- IDEA直连服务器及文件传输
- 项目打包及Spark任务运行
项目背景
1.本地同样配置好了java以及scala语言,版本与服务器一致
2.本地已经配置好了Maven
3.学习了scala基本数据类型和基本语法
4.已经完成服务器端Spark的部署(参考上文)
nebula-algorithm配置流程学习【1】——Spark安装及配置 - 掘金 (juejin.cn)
实现步骤
前期插件准备
在IDEA刚打开的界面,进入Plugin,搜Scala,安装 重启 IDEA
项目创建
创建Maven项目(这里我创建了一个wordcount的项目)
在pom依赖里添加本次需要的spark和scala版本。在上一篇文章中,我在服务器安装的是Spark 2.4.4以及Scala 2.11.12,所以,仍然采用相同版本
开发环境配置
Maven加载包后右键项目,选择添加框架
创建文件
在目录 /src/main/java 中创建Scala Object
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包
随后点击build,选择Artifact build,将生成的jar包放入服务器指定位置(随意,data文件夹的位置对就ok)
上传执行
命令行进入指定目录,执行如下命令:(端口号这里,Master的配置方式请见上文配置Spark处),随后可以看到打印结果
spark-submit --master spark://VM-20-17-centos:7077 --class wordcount ./wordcount.jar
Spark任务执行过程理解
所以,包括spark官方自己的安装包里的example在内,jar包其实就是一个算法库,本身应该是写好了解析spark-submit时输入的其他参数的函数,随后去执行算法的。那么,nebula-algorithm应该也是一个算法包,到时候指定好参数,图空间,就可以进行图计算了!