scala
的安装与其它编程语言相比有一些特殊:scala
并不是安装在系统里,而是安装在你的每一个scala project
中。
安装步骤:
首先确保安装了Java 8 JDK
:通过命令 java -version
查看。
有scala+IntelliJ
和 scala+sbt
两种方式。区别在于:
scala+IntelliJ
:集成了IntelliJ
这个IDE
,对新手友好。scala+sbt
:在命令行中执行scala
,以及使用命令行来利用sbt
编译。当前(2019-01-09)最新版本sbt 1.2.8
。scala+sbt
安装方式:执行脚本(参考https://www.scala-lang.org/download/
)
echo "deb https://dl.bintray.com/sbt/debian /" | sudo tee -a \
/etc/apt/sources.list.d/sbt.list
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv \
2EE0EA64E40A89B84B2DF73499E82A75642AC823
sudo apt-get update
sudo apt-get install sbt
然后执行sbt
命令,该命令会同步下载一些 jar
包。
scala+IntelliJ
安装方式:
下载IntelliJ Community Edition
。
安装插件:打开File->Settings->Plugins
,搜索并安装 scala
(不需要安装其它,如SBT
) 。
新建Project
,选择Scala
,在面板右侧选择IDEA
(而不是sbt
或者 Lightbend Project Starter
)。
选择下一步
,在填写 Project name
和 JDK/Scala SDK
的地方。点击Scala SDK
右侧的Create
,可以选择下载或者切换到指定版本的Scala SDK
。
在src
右键单击,选择New->Scala Class
。
如果需要可执行代码,则Kind
选择Object
,并新建一个包含main()
方法的 object
(或者选择extends App
) 。在编辑界面右键单击,选择Run
,则代码编译并执行。
xxxxxxxxxx
object Hello extends App {
println("Hello, World!")
}
如果需要创建package
、Class
,则选择常规方式。
如果希望快速验证某些代码片断,则可以创建Scala Worksheet
。方法是:在src
右键单击,选择New->Scala Worksheet
。
此时当你在编辑器修改了代码之后,代码立即会被求值并展示在编辑器右侧。
通过almond
安装scala
的 jupyter
支持:
下载 coursier
:
xxxxxxxxxx
curl -L -o coursier https://git.io/coursier && chmod +x coursier \
&& ./coursier --help
创建一个 launcher
:
xxxxxxxxxx
SCALA_VERSION=2.12.8 ALMOND_VERSION=0.2.1 #环境变量
coursier bootstrap \
-r jitpack \
-i user -I user:sh.almond:scala-kernel-api_$SCALA_VERSION:$ALMOND_VERSION \
sh.almond:scala-kernel_$SCALA_VERSION:$ALMOND_VERSION \
--sources --default=true \
-o almond
安装kernel
:
xxxxxxxxxx
./almond --install
一旦安装完成,则可以安全的删除lancher
。删除方法为:rm -f almond
。
可以通过命令 jupyter kernelspec list
查看支持的kernel
:
可以通过https://github.com/jupyter/jupyter/wiki/Jupyter-kernels
查看jupyter
官方支持的 kernel
列表。
通过 sparkmagic
安装spark
的jupyter
支持:
启用spark
(单机伪分布式):
下载spark
:http://spark.apache.org/downloads.html
解压缩文件,进入spark
目录下的sbin
,执行 start-all.sh
。如果希望停止,则执行stop-all.sh
。
默认的spark ui
:http://127.0.0.1:8080/
。
安装 livy
依赖:
下载livy
:https://livy.incubator.apache.org/download/
。
解压缩livy
,进入livy
文件夹,然后运行bin/livy-server
。
livy/conf
中配置 livy-server
。export SPARK_HOME
变量。livy ui
:http://localhost:8998
。安装必要组件:
xxxxxxxxxx
python3.6 -m pip install sparkmagic # 安装 sparkmagic
jupyter nbextension enable --py --sys-prefix widgetsnbextension # 确保 ipywidgets 安装
通过python3.6 -m pip show sparkmagic
查看 sparkmagic
的安装位置,cd
到该位置。
安装一些kernel
(如果某些功能不需要,则不用安装):
xxxxxxxxxx
jupyter-kernelspec install sparkmagic/kernels/sparkkernel # scala spark
jupyter-kernelspec install sparkmagic/kernels/pysparkkernel # pyspark
jupyter-kernelspec install sparkmagic/kernels/pyspark3kernel # pyspark3
jupyter-kernelspec install sparkmagic/kernels/sparkrkernel # r spark
可选:可以修改~/.sparkmagic/config.json
来修改配置,其内容参考 https://github.com/jupyter-incubator/sparkmagic/blob/master/sparkmagic/example_config.json
。
其中 kernel_xx_credentials
中的 url
给出了 livy-server
的 host:port
。
可选:启用server
扩展,从而允许以编程的方式更改集群:
xxxxxxxxxx
jupyter serverextension enable --py sparkmagic
通过jupyter notebook
启动jupyter
,新建一个pyspark
页面,执行sc
或者spark
。如果输出正常则安装成功。
Scala
解释器:一个编写Scala
的交互式shell
。调用方式为:在命令行中执行命令scala
。
Scala
解释器会对你录入的表达式求值,并输出结果。结果格式为:
xxxxxxxxxx
变量名 : 结果类型 = 结果值
如果表达式中定义了变量,则变量名就是该变量的名字;否则变量名就是resX
,你可以在后续表达式中使用该变量名。
|
。如果希望退出该模式,则连续按两次回车即可。:q
或者:quit
。Obj.
然后键入Tab
。如果希望在解释器中引入第三方包的依赖,则可以使用 sbt
来管理。
首先创建一个目录,然后在该目录下创建一个名为 build.sbt
的文件。
然后去 https://search.maven.org
中搜索第三方依赖包的坐标。
修改该文件,在该文件中,你可以指定 scala
版本、依赖包:
xxxxxxxxxx
name := "Scala Playground"
version := "1.0"
scalaVersion := "2.10.2" # scala 版本
libraryDependencies += "com.twitter" % "algebird-core_2.10" % "0.13.5" # 第三方依赖
在该目录下,执行命令 sbt console
。
IntelliJ
用于查看符号的快捷键:
F1
:查看该符号的说明文档(如果有的话)。⌥Space
:查看该符号的定义代码。⌥⌘F7
:查看该符号在哪些地方被用到。⌥⌘B
:查看该符号的实现。Ctrl+Shift+P
:查看该符号的数据类型。⌥⌘L
:格式化代码。
如果项目使用了 Maven
,则有可能IntelliJ
未能实时跟踪到 Maven
下载的第三方依赖包,此时 IntelliJ
的代码提示找不到对应的符号。
解决方案:执行 File | Invalidate Caches
。如果未能解决,则删除IDEA system directory
(Linux下位于 ~/.<PRODUCT><VERSION>
)。