MAC下搭建Intellij IDEA+Scala SDK+Scala插件环境
网上很多配置Scala开发环境的都不完整, 只安装了Scala插件,没有Scala SDK。亲试后如下:
前提环境:
Mac电脑+Intellij IDEA+JAVA 8
步骤如下:
1、安装Scala插件Intellij IDEA–>Configure–>Plugins
在输入框中输入Scala,找到Scala后,点击右边的install按钮,完成安装后重启Intellij IDEA生效
2、安装Scala SDK后命令行运行
下载Scala SDK: https://www.scala-lang.org/download/
在Other Resources里面选择scala-2.12.7.tgz Mac OS X, Unix, Cygwin 19.47M下载。解压拷贝scala-2.11.7文件夹至/usr/local/下
在命令行配置环境变量
vi ~/.bash_profile
添加环境变量SCALA_HOME
export SCALA_HOME="/usr/local/scala-2.11.7"
在PATH后加入$SCALA_HOME/bin
export PATH=$PATH:$M2_HOME/bin:$SCALA_HOME/bin
使环境变量生效
source .bash_profile
此时Scala环境已经配置完毕,在命令行输入scala后回车,进入Scala环境,要退出输入:q
3、在Intellij IDEA中编写Scala程序
Create New Project->Scala->在右边选择IDEA->next
此时Scala SDK显示No library selected,点击右边Create按钮,点击Browse,选择/usr/local/scala-2.11.7/lib文件夹确定。
此时Scala SDK识别出scala-sdk-2.12.7成功,在Project name中输入工程名称后点击finish。
4、在Intellij IDEA中使用sbt编写Scala程序(推荐)
Create New Project->Scala->在右边选择SBT->next
此时Scala SDK显示No library selected,点击右边Create按钮,点击Browse,选择/usr/local/scala-2.11.7/lib文件夹确定。
此时Scala SDK识别出scala-sdk-2.12.7成功,在Project name中输入工程名称sbttest后点击finish。
参考:Scala官方文档 https://docs.scala-lang.org/getting-started-sbt-track/getting-started-with-scala-and-sbt-on-the-command-line.html
可以看到sbt与maven的目录结构很相似,只是用build.sbt代替了pom.xml
习惯命令行的同学可在左下角的Terminal中运行find .来查看目录结构。修改build.sbt的内容(参考Spark官方文档的Scala sbt的例子)由
name := “sbttest”
version := “1.0”
scalaVersion := "2.12.1"修改为:
name := “sbttest”
version := “1.0”
scalaVersion := “2.11.7”
libraryDependencies += “org.apache.spark” % “spark-sql” % “2.3.1”
保存后提示build.sbt was changed,点击右边Refresh project,等待sbt下载依赖包完成。(目前Spark只支持Scala2.11.*)
在src/main/scala下新建SbtTest.scala文件,输入:
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.sql.SparkSession
object SbtTest {
def main(args: Array[String]) {
val logFile = "/Users/darren/Downloads/spark-2.3.1-bin-hadoop2.7/README.md" // Should be some file on your system
//val spark = SparkSession.builder.appName("Simple Application").getOrCreate()
val conf = new SparkConf().setMaster("local").setAppName("sbttest")
val sc = new SparkContext(conf)
val logData = sc.textFile(logFile).cache()
val numAs = logData.filter(line => line.contains("a")).count()
val numBs = logData.filter(line => line.contains("b")).count()
println(s"Lines with a: $numAs, Lines with b: $numBs")
//spark.stop()
}
}
运行完成了一个Spark的Scala程序。