Intellij IDEA开发环境搭建,scala配置及打包,jar包在spark中的运行
1. Intellij IDEA 开发环境搭建
最近在学习scala,除需要编写scala程序外,同时还需要创建maven工程,打成Jar包,而Eclipse在这方面显得使用的不是那么方面,同时由于Intellij IDEA提供了非常智能的提示功能,所以选择IDEA作为开发环境。Intellij IDEA现在也提供社区版本供开发者免费使用,所以许多原来的Eclipse用户也逐渐的转向IDEA,一方面可以智能的提示和快捷键可以提高开发效率,另一方面其整洁的界面设计和丰富的插件集成功能,方便了程序的集成开发和使用。这里是官网下载地址https://www.jetbrains.com/idea/download/download-thanks.html?platform=windows&code=IIC,为了开发方便可以下载Windows版本直接安装。
安装的过程可以一路next到底,不要管太多插件上的问题,直到创建工程时再开始设置就行了。下面是一些常用的设置:
-
首次新建JAVA工程时要指定JDK所在目录
-
设置字体大小和间距:
-
控制台的字体大小和间距:
-
显示行号:
-
在【View】下显示ToolBar和Tool Buttons,【setting】
就在ToolBar中:
- 无法修改时,先save as,这是Intellij的设计理念
另外,除了可以使用免费的社区版,现在也有**的Ultimate企业版,其功能相对于Community要强大,所以可以使用以下方式进行**。
IDEA相比较其他编译器很好用,但是企业版需要**(在校学生可以免费申请),启动时会弹出**页面,下面有两种方法可以**,自己偏爱第二种,第一种偶尔会失效……
1. 到网站 http://idea.lanyus.com/ 获取***。
2.填入下面的license server:
http://intellij.mandroid.cn/
http://idea.imsxm.com/
http://idea.iteblog.com/key.php
/***********************update 2017/12/14*************************/
突然发现三个**服务器都不能用了,不知道是哪位大神自己搭建的服务器http://idea.java.sx/,可用
/***********************update 2018/1/15*************************/
选择第二种复制下面这段代码到文本框中(可用)
- C0FHYYCJ22-eyJsaWNlbnNlSWQiOiJDMEZIWVlDSjIyIiwibGljZW5zZWVOYW1lIjoid2VpIGh1YW5nIiwiYXNzaWduZWVOYW1lIjoiIiwiYXNzaWduZWVFbWFpbCI6IiIsImxpY2Vuc2VSZXN0cmljdGlvbiI6IiIsImNoZWNrQ29uY3VycmVudFVzZSI6ZmFsc2UsInByb2R1Y3RzIjpbeyJjb2RlIjoiSUkiLCJmYWxsYmFja0RhdGUiOiIyMDE3LTAyLTI2IiwicGFpZFVwVG8iOiIyMDE4LTAyLTI1In1dLCJoYXNoIjoiNTA2NDQ3MS8wIiwiZ3JhY2VQZXJpb2REYXlzIjo3LCJhdXRvUHJvbG9uZ2F0ZWQiOmZhbHNlLCJpc0F1dG9Qcm9sb25nYXRlZCI6ZmFsc2V9-pujnwQxf3C8yHf0amTTAId+Oj1LzpvTsn71x0pvgjvXtx7MWs0AAbAX2L5frRvM/0AzmF7aQuayU5EEcew+J5j0O6RsCxMUilbeeQuCBDZK1bm9NKlAYf90RSKqQ9ViMyjsBVTHoABM0XHNi++XASeBB9g1OUZdzseLZ6pit0G0BPmunKIuX7bqjWewl0okbNIl+bW2y3eD4un9jDODbjMmdlB6T42s6mQ/lDkjD65C5OY1nY2fsVyd4sa4i0iCYwNvzFlDVG/AzziLYNDAdjipE+lN5McMXMfPZuGKkvTJMJk56l5t+jPjdjPRDId+lLqa0GU3zaNP251mm8vmOew==-MIIEPjCCAiagAwIBAgIBBTANBgkqhkiG9w0BAQsFADAYMRYwFAYDVQQDDA1KZXRQcm9maWxlIENBMB4XDTE1MTEwMjA4MjE0OFoXDTE4MTEwMTA4MjE0OFowETEPMA0GA1UEAwwGcHJvZDN5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxcQkq+zdxlR2mmRYBPzGbUNdMN6OaXiXzxIWtMEkrJMO/5oUfQJbLLuMSMK0QHFmaI37WShyxZcfRCidwXjot4zmNBKnlyHodDij/78TmVqFl8nOeD5+07B8VEaIu7c3E1N+e1doC6wht4I4+IEmtsPAdoaj5WCQVQbrI8KeT8M9VcBIWX7fD0fhexfg3ZRt0xqwMcXGNp3DdJHiO0rCdU+Itv7EmtnSVq9jBG1usMSFvMowR25mju2JcPFp1+I4ZI+FqgR8gyG8oiNDyNEoAbsR3lOpI7grUYSvkB/xVy/VoklPCK2h0f0GJxFjnye8NT1PAywoyl7RmiAVRE/EKwIDAQABo4GZMIGWMAkGA1UdEwQCMAAwHQYDVR0OBBYEFGEpG9oZGcfLMGNBkY7SgHiMGgTcMEgGA1UdIwRBMD+AFKOetkhnQhI2Qb1t4Lm0oFKLl/GzoRykGjAYMRYwFAYDVQQDDA1KZXRQcm9maWxlIENBggkA0myxg7KDeeEwEwYDVR0lBAwwCgYIKwYBBQUHAwEwCwYDVR0PBAQDAgWgMA0GCSqGSIb3DQEBCwUAA4ICAQC9WZuYgQedSuOc5TOUSrRigMw4/+wuC5EtZBfvdl4HT/8vzMW/oUlIP4YCvA0XKyBaCJ2iX+ZCDKoPfiYXiaSiH+HxAPV6J79vvouxKrWg2XV6ShFtPLP+0gPdGq3x9R3+kJbmAm8w+FOdlWqAfJrLvpzMGNeDU14YGXiZ9bVzmIQbwrBA+c/F4tlK/DV07dsNExihqFoibnqDiVNTGombaU2dDup2gwKdL81ua8EIcGNExHe82kjF4zwfadHk3bQVvbfdAwxcDy4xBjs3L4raPLU3yenSzr/OEur1+jfOxnQSmEcMXKXgrAQ9U55gwjcOFKrgOxEdek/Sk1VfOjvS+nuM4eyEruFMfaZHzoQiuw4IqgGc45ohFH0UUyjYcuFxxDSU9lMCv8qdHKm+wnPRb0l9l5vXsCBDuhAGYD6ss+Ga+aDY6f/qXZuUCEUOH3QUNbbCUlviSz6+GiRnt1kA9N2Qachl+2yBfaqUqr8h7Z2gsx5LcIf5kYNsqJ0GavXTVyWh7PYiKX4bs354ZQLUwwa/cG++2+wNWP+HtBhVxMRNTdVhSm38AknZlD+PTAsWGu9GyLmhti2EnVwGybSD2Dxmhxk3IPCkhKAK+pl0eWYGZWG3tJ9mZ7SowcXLWDFAk0lRJnKGFMTggrWjV8GYpw5bq23VmIqqDLgkNzuoog==
2.scala配置
Intellij IDEA默认配置里面没有Scala插件,需要手动安装,在Intellij IDEA 首次运行时选择configure plugins,选择默认后在软件主界面去配置,但是测试发现,这种设置方式经常会因为网络问题配置失败,建议直接到 https://plugins.jetbrains.com/plugin/1347-scala这个链接去下载,下载完成后,解压到Intellij IDEA 安装目录中的plugins里面去,然后启动Intellij IDEA 。然后就可以创建爱你Scala开发环境的创建:
1 File->New Project
选择scala->IDEA,填写项目名,选择项目保存的路径和JDK及Scala SDK版本,然后下一步:得到下列界面:
点击Finish,然后点击File-->Project Structure,出现如下图所示,选择安装的jdk目录,及所建立工程文件的路径
在Project->Project SDK的右侧,点击new,得到:
选择JDK,在弹出框中选择JDK的安装目录
在Libraries右侧点击绿色的“+”号,选择Scala SDK,出现下图所示的选择scala版本的选项:
在上一步骤中,可以选择Intellij IDEA中自带的Scala,也可以使用自己安装好的Scala,点击上图中的”Browse”,然后选择Scala的安装目录,配置好之后,直接finish,得到下列工程目录
点击File->Project Structure->Modules,
在src目录上,右键然后点击new fold 命名为main,再右鍵main,同样new fold,命名为scala,并设置为sources,如下图,注意,src、main均不要设置sources,否则后面编译helloworld会报错 XX is already defined as object xx
整体的工程文件已经创建好了,如下图: 在scala源文件目录上,直接右鍵,new->scala class ,选择Object,然后输入名称:HelloWorld
输入的代码如下:
1 object HelloWorld { 2 def main(args: Array[String]) { 3 println("Hello World") 4 } 5 }
点击HelloWorld.scala文件,右键或直接ctr+shift+F10运行程序
3.程序打包
File->Project Structure
Next step:
选择主类:(点击省略号会自动出现要使用的主类)
Next step:
点击应用、OK
Next step:
Next step:
Next step:
本地打好的包:
程序运行过程出现的异常及解决方式
编写完scala程序,在运行时出现Error:scalac: Error: org.jetbrains.jps.incremental.scala.remote.ServerException类型的异常。
折腾一两个小时,最后发现安装了多个版本的Scala SDK,前后设置的版本不一致。另外,也要注意scala2.1以上的版本尽量使用JDK1.8。还有,如果要在spark集群环境下运行scala程序是,要注意使用的scala版本和spark的版本的兼容性问题,从Spark2.0版开始,Spark默认使用Scala 2.11构建,Scala 2.10用户应该下载Spark源码包,并用Scala 2.10支持构建 。
Jar包在Spark中运行
将jar包通过XShell上传到服务器的摸个目录下,我这里将HelloScala的jar包放在/home/hadoop/myProject/myJar/目录下,进入spark的安装目录,启动spark(./start-all.sh),并通过如下的名利运行jar包:
/usr/local/spark/bin/spark-submit --class "HelloScala" /home/hadoop/myProject/myJar/HelloScala.jar
Local模式运行spark应用程序,通过spark-submit提交应用程序,该命令的格式如下:
/usr/local/spark/bin/spark-submit //提交Spark任务的入口,其中/usr/local/spark为spark的安装目录,spark-submit为提交Spark 任务的脚本
--class <main-class> //需要运行的程序的主类,应用程序的入口点
--master <master-url> //Master URL,下面会有具体解释
--deploy-mode <deploy-mode> //部署模式
... # other options //其他参数
<application-jar> //应用程序JAR包
[application-arguments] //传递给主类的主方法的参数
deploy-mode这个参数用来指定应用程序的部署模式,部署模式有两种:client和cluster,默认是client。当采用client部署模式时,就是直接在本地运行Driver Program,当采用cluster模式时,会在Worker节点上运行Driver Program。比较常用的部署策略是从网关机器提交你的应用程序,这个网关机器和你的Worker集群进行协作。在这种设置下,比较适合采用client模式,在client模式下,Driver直接在spark-submit进程中启动,这个进程直接作为集群的客户端,应用程序的输入和输出都和控制台相连接。因此,这种模式特别适合涉及REPL的应用程序。另一种选择是,如果你的应用程序从一个和Worker机器相距很远的机器上提交,那么采用cluster模式会更加合适,它可以减少Driver和Executor之间的网络迟延。
Intellij IDEA常用快捷键
快捷鍵 | 用法描述 |
---|---|
Ctrl+Shift+A | 根据名称查找操作,例如查找创建scala class操作 |
Alt+F1 | 视图切换 |
Ctrl+Tab | 工具窗口、正在编辑的代码文件切换 |
Alt+Home | 显示导航条 |
Ctrl+J | 插入代码模板,例如main方法 |
Ctrl+Alt+J | 将选中的代码用代码模板包裹 |
F4 | 打开工程配置窗口 |
Ctrl+Slash | 注释代码 // |
Ctrl+Shift+Slash | 注释代码 /**/ |
Ctrl+N/Ctrl+Shift+N | 输入名称查询类或文件 |
Ctrl+D | 复制选中的代码 |
Ctrl+W / Ctrl+Shift+W | 智能地进行代码选择 |
Ctrl+F | 在当前文件中进行文本内容查找 |
Shift+Shift | search everywhere |
Ctrl+Shift+F7 | 高亮显示先中的方法或符号在当前文件中的使用情况 |
Ctrl+Space | 代码自动提示 |
Ctrl+Shift+Enter | 语句自动完成 |
Alt+enter | 代码自动修正 |
参考:
http://www.mamicode.com/info-detail-1192175.html
http://blog.****.net/baolibin528/article/details/50315863