环境搭建

一、安装 scala

  1. scala 的安装与其它编程语言相比有一些特殊:scala 并不是安装在系统里,而是安装在你的每一个scala project 中。

  2. 安装步骤:

    • 首先确保安装了Java 8 JDK:通过命令 java -version 查看。

    • scala+IntelliJscala+sbt 两种方式。区别在于:

      • scala+IntelliJ :集成了IntelliJ 这个IDE,对新手友好。
      • scala+sbt :在命令行中执行scala,以及使用命令行来利用sbt 编译。当前(2019-01-09)最新版本sbt 1.2.8
  3. scala+sbt 安装方式:执行脚本(参考https://www.scala-lang.org/download/

    然后执行sbt 命令,该命令会同步下载一些 jar 包。

  4. scala+IntelliJ 安装方式:

    • 下载IntelliJ Community Edition

    • 安装插件:打开File->Settings->Plugins,搜索并安装 scala (不需要安装其它,如SBT ) 。

    • 新建Project,选择Scala,在面板右侧选择IDEA(而不是sbt 或者 Lightbend Project Starter )。

    • 选择下一步,在填写 Project nameJDK/Scala SDK 的地方。点击Scala SDK 右侧的Create,可以选择下载或者切换到指定版本的Scala SDK

    • src 右键单击,选择New->Scala Class

      • 如果需要可执行代码,则Kind 选择Object,并新建一个包含main() 方法的 object (或者选择extends App ) 。在编辑界面右键单击,选择Run,则代码编译并执行。

      • 如果需要创建packageClass,则选择常规方式。

  5. 如果希望快速验证某些代码片断,则可以创建Scala Worksheet 。方法是:在src 右键单击,选择New->Scala Worksheet

    此时当你在编辑器修改了代码之后,代码立即会被求值并展示在编辑器右侧。

二、安装 Jupyter 支持

  1. 通过almond 安装scalajupyter 支持:

    • 下载 coursier

    • 创建一个 launcher

    • 安装kernel

      一旦安装完成,则可以安全的删除lancher。删除方法为:rm -f almond

    • 可以通过命令 jupyter kernelspec list 查看支持的kernel

  2. 可以通过https://github.com/jupyter/jupyter/wiki/Jupyter-kernels 查看jupyter 官方支持的 kernel 列表。

  3. 通过 sparkmagic 安装sparkjupyter 支持:

    • 启用spark(单机伪分布式):

      • 下载sparkhttp://spark.apache.org/downloads.html

      • 解压缩文件,进入spark 目录下的sbin,执行 start-all.sh 。如果希望停止,则执行stop-all.sh

        默认的spark uihttp://127.0.0.1:8080/

    • 安装 livy 依赖:

      • 下载livyhttps://livy.incubator.apache.org/download/

      • 解压缩livy,进入livy 文件夹,然后运行bin/livy-server

        • 可以在 livy/conf 中配置 livy-server
        • 需要export SPARK_HOME 变量。
        • 默认的livy uihttp://localhost:8998

    • 安装必要组件:

    • 通过python3.6 -m pip show sparkmagic 查看 sparkmagic 的安装位置,cd 到该位置。

    • 安装一些kernel (如果某些功能不需要,则不用安装):

    • 可选:可以修改~/.sparkmagic/config.json 来修改配置,其内容参考 https://github.com/jupyter-incubator/sparkmagic/blob/master/sparkmagic/example_config.json

      其中 kernel_xx_credentials 中的 url 给出了 livy-serverhost:port

    • 可选:启用server 扩展,从而允许以编程的方式更改集群:

    • 通过jupyter notebook 启动jupyter,新建一个pyspark 页面,执行sc 或者spark。如果输出正常则安装成功。

三、Scala 解释器

  1. Scala 解释器:一个编写Scala 的交互式shell。调用方式为:在命令行中执行命令scala

    Scala 解释器会对你录入的表达式求值,并输出结果。结果格式为:

    如果表达式中定义了变量,则变量名就是该变量的名字;否则变量名就是resX ,你可以在后续表达式中使用该变量名。

    • 如果希望在解释器中输入多行代码,只需要按回车。此时解释器会在下一行头部加上竖线| 。如果希望退出该模式,则连续按两次回车即可。
    • 退出解释器,则键入:q 或者:quit
    • 如果希望查看对象包含的方法/属性,则可以输入Obj. 然后键入Tab
  2. 如果希望在解释器中引入第三方包的依赖,则可以使用 sbt 来管理。

    • 首先创建一个目录,然后在该目录下创建一个名为 build.sbt 的文件。

    • 然后去 https://search.maven.org 中搜索第三方依赖包的坐标。

    • 修改该文件,在该文件中,你可以指定 scala 版本、依赖包:

    • 在该目录下,执行命令 sbt console

四、IntelliJ 使用

  1. IntelliJ 用于查看符号的快捷键:

    • F1:查看该符号的说明文档(如果有的话)。
    • ⌥Space:查看该符号的定义代码。
    • ⌥⌘F7:查看该符号在哪些地方被用到。
    • ⌥⌘B:查看该符号的实现。
    • Ctrl+Shift+P:查看该符号的数据类型。
  2. ⌥⌘L:格式化代码。

  3. 如果项目使用了 Maven,则有可能IntelliJ 未能实时跟踪到 Maven 下载的第三方依赖包,此时 IntelliJ 的代码提示找不到对应的符号。

    解决方案:执行 File | Invalidate Caches。如果未能解决,则删除IDEA system directory (Linux下位于 ~/.<PRODUCT><VERSION> )。

五、Maven 使用