win10本地开发scala程序并提交到虚拟机spark集群中

  1. Win10环境准备

1.1 jdk,scala,sbt安装

Jdk安装:1.8.0_191

Scala安装: 2.11.6

Sbt安装: 1.2.6

都是默认安装,建议跟自己spark集群中安装的版本一致,可以升级spark集群的版本。否则后续需要在intellij中修改兼容性。

这三个安装后找到此计算机->属性->高级系统设置,选择环境变量,然后添加这三者的环境变量,步骤为:

  1. 用户变量处,点击新建,,名称输入JDK_HOME。路径输入对应的jdk安装路径(注意是jdk)
  2. 系统变量处,点击Path,输入%JDK_HOME%\bin;(用;区分开)
  3. 其它两个都相同。添加系统变量可以在cmd中依次输入java –version,scala -version,

sbt sbtVersion(-前有空格)

:添加sbt系统变量后,由于sbt下载依赖时默认是从国外服务器下载,所以速度会比较慢。建议采用源:在sbt/conf下新建一个repository.properties文件,输入以下内容:

[repositories] 

local 

comp-maven:http://mvnrepository.com/artifact/  store_cn:http://maven.aliyun.com/nexus/content/groups/public/ store_mir:http://mirrors.ibiblio.org/maven2/

store_0:http://maven.net.cn/content/groups/public/ 

store_1:http://repo.typesafe.com/typesafe/ivy-releases/

store_2:http://repo2.maven.org/maven2/

sbt-releases-repo: http://repo.typesafe.com/typesafe/ivy-releases/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext] 

sbt-plugins-repo: http://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]  

maven-central: http://repo1.maven.org/maven2/

然后在sbtconfig.txt输入以下内容:

# Set the java args to high

-Xmx512M

-XX:MaxPermSize=256m

-XX:ReservedCodeCacheSize=128m

# Set the extra SBT options

-Dsbt.log.format=true

-Dsbt.boot.directory=D:/project/.sbt/boot//设置你的git仓库

-Dsbt.ivy.home=D:/project/.ivy2

-Dsbt.global.base=D:/project/.sbt

-Dsbt.repository.config=C:/Program Files (x86)/sbt/conf/repository.properties

这部分我添加后在cmd输入sbt sbtVersion会显示此处不应该有repository.properties等信息,但是运行程序没有问题。所以也就忽略了。

参考博客:https://blog.****.net/leo3070/article/details/80040400

1.2 Intellij安装以及scala插件

a. Intellij***通过学校邮箱可以获取(https://www.jetbrains.com/shop/eform/students),有效期是一年,每年可以延长(只要学校邮箱有效),安装也都是默认安装.

b. 安装后在界面的右下角有configure,点击后选择第二个的plugins安装scala插件,在搜索栏中输入scala,然后点击install即可。安装后重启intellij。

c.配置jdk:欢迎界面的configure->project default->(若新建了文件则直接点击

file->) project structure->project->new选择Jdk,弹出的界面中选择jdk安装的路径,然后点击ok。

win10本地开发scala程序并提交到虚拟机spark集群中

Intellij使用scala进行开发

a.file->create project->next

win10本地开发scala程序并提交到虚拟机spark集群中

b. 选择jdk,sbt,scala对应的版本,点击finish

win10本地开发scala程序并提交到虚拟机spark集群中

建立以下目录:

win10本地开发scala程序并提交到虚拟机spark集群中

  1. 首先编辑build.sbt,选择对应的版本以及所需要增加的依赖(import模块所需要的库文件,注意版本信息,首先下载依赖会比较久),编辑后右下角会出现选项,选择enable auto import,每次更改就会自动更新。另外一个则是手动更新。更新后出现3即为成功。

win10本地开发scala程序并提交到虚拟机spark集群中

  1. 引入scala类库

Project structure->module->dependence->module source->+->library

win10本地开发scala程序并提交到虚拟机spark集群中

若正确配置,点击new liabrary 会显示对应的scala版本,勾选即可,若没有,则点击browse,找到scala/lib的安装路径。

win10本地开发scala程序并提交到虚拟机spark集群中

win10本地开发scala程序并提交到虚拟机spark集群中

保存该lib。

win10本地开发scala程序并提交到虚拟机spark集群中

点击ok后,返回选中该文件,并且点击左下角的add selected,即添加该lib

增加scala类

按照下图,点击scala右键,选中scala为resource root

win10本地开发scala程序并提交到虚拟机spark集群中

然后右键新建一个class,输入对应的代码:

import org.apache.spark.SparkContext

import org.apache.spark.SparkContext._

import org.apache.spark.SparkConf

object WordCount {

  def main(args: Array[String]) {

    val logFile =  "file:///usr/local/spark/README.md"

    //val conf = new SparkConf().setAppName("WordCount")//.setMaster("local[2]")

    //val logFile =  "file:///D:/project/test/README.md"

    val conf = new SparkConf().setAppName("WordCount")//.setMaster("202.38.214.5")

    val sc = new SparkContext(conf)

    val logData = sc.textFile(logFile,2).cache()

    val numAs = logData.filter(line =>line.contains("a")).count()

    val numBs = logData.filter(line =>line.contains("b")).count()

    println("Line with a :%s,Line with b :%s".format(numAs,numBs))

  }

}

6打包为jar

File->artifact->jar->from module with dependence

win10本地开发scala程序并提交到虚拟机spark集群中

按下边操作,在3处若没有显示,则在搜索栏输入scala class类名,选中,再继续操作

win10本地开发scala程序并提交到虚拟机spark集群中

由于最后在spark中运行(有些文件spark可能自带了),只需要下边两个文件,选中其余文件,然后点击-删除,接着点击ok.

win10本地开发scala程序并提交到虚拟机spark集群中

点击菜单栏的bulid->build artfacts

win10本地开发scala程序并提交到虚拟机spark集群中

win10本地开发scala程序并提交到虚拟机spark集群中

  1. 将jar包传到虚拟机中/home/hadoop/Downloads中,提交到spark中运行

cd /usr/local/spark#你的spark安装目录

./bin/spark-submit --class "WordCount" /home/hadoop/Downloads/test.jar 2>&1 | grep "Line with a :"

win10本地开发scala程序并提交到虚拟机spark集群中