在进行本地Scala环境配置时,需要完成以下几个步骤:
1、安装JDK,目前仅支持1.8版本;
2、安装Scala,并配置对应的环境变量;
3、安装Spark,并配置对应的环境变量;
4、安装Intellij,并下载对应的scala plugin。
详细可见:
https://blog.csdn.net/u011513853/article/details/52865076(Windows)
https://blog.csdn.net/u010171031/article/details/51849562 (Linux:Ubuntu )
在所有的环境变量配置好以后,应当在cmd下(或者Ubuntu的终端下)进行测试:
java -version
scala -version
spark-shell
如果安装完好的话应当由对应信息提示
在完成环境配置以后,就可以新建Intellij的project,在此强烈建议使用maven进行任务创建,不推荐sbt或者直接scala格式,主要由于maven是一个非常方便的中央仓库,第一次使用的时候会觉得有点奇怪,但一旦尝试成功会发现这是一个非常方便的工具,并且其内置的package程序可以非常方便的用于scala文件打包。
以下,笔者一步步对工程构建及程序打包进行说明:
1、打开Intellij,新增project,选择maven,并点击下一步(暂时不用Create from archetype)
2、填写GroupId、ArtifactId、Version,这三个都是为了对project进行分类,实际上与Apache项目的建立是类似的,以笔者为例,假设我是大鱼公司(bigfish.com),目前要建造一个用于spark机器学习的项目(spark_ml),依次点击下一步即可。
3、右键spark_ml,Add FrameWork Support,选择scala,也就是把scala增加到了项目中
4、增加scala的libraries:点击File ,Project Structure,将Global libraries中的scala sdk复制到上面的libraries,这些工作都是为了使得intellij能够作为scala的编辑器,并且能够新增scala 的class文件,因为intellij最初是默认用于java的
5、在src的main文件下新增scala文件夹(Mark as Sources Root),test下新增scala文件(Mark as Test Root),新增的scala文件就放在main下面的scala文件夹中
6、在src/main/scala下新增scala class,并选择为Object,本处起名叫HelloSpark
7、在HelloSpark下加入以下内容,这已经是一个完整的scala对象,run以后会打印出“Hello Spark”
object HelloSpark {
def main(args:Array[String]):Unit= {
println("Hello Spark")
}
}
8、接下来就可以尝试打包了,此时能够打包,但是打包以后的jar文件在运行后会提示没有主类,主要是由于maven的打包文件还未配置好,在pom.xml文件中增加以下内容,这个主要用于使得maven的打包程序有效,需要注意这一句(
1.7
1.7
UTF-8
2.11.8
2.11
src/main/scala
src/test/scala
net.alchim31.maven
scala-maven-plugin
3.2.2
compile
testCompile
-dependencyfile
${project.build.directory}/.scala_dependencies
org.apache.maven.plugins
maven-shade-plugin
2.4.3
package
shade
*:*
META-INF/*.SF
META-INF/*.DSA
META-INF/*.RSA
reference.conf
HelloSpark
org.scala-lang
scala-library
${scala.version}
9、使用maven的工具进行打包,点击package即可,一切顺利的话会在target文件夹内生成两个jar文件,一个是未处理的,一个是增加了依赖包等最终得到的jar文件
10、测试jar文件的有效性:通过cmd进入target文件夹,并输入 java -jar spark_ml-1.0-0.jar,一切顺利的话会输出 Hello Lorry,由打包依赖可知必须要有scala的插件与maven的插件,并且在最终打包结果中会输出一个处理后的jar包和处理之前的jar包,笔者用同样的做法测试了spark的wordcount等程序,结果是一样的,只要在进行maven依赖设置时注意相关事项,就能比较方便的使用该软件进行scala程序建立以及最终打包。