[英]How to install scala 2.12
有多个二进制不兼容的 scala 2 版本,但是文档说安装是通过 IDE 或 SBT。
然后,安装 Scala:...通过安装 IDE(例如 IntelliJ)或 sbt(Scala 的构建工具)。
Spark 3需要 Scala 2.12。
Spark 3.1.2 使用 Scala 2.12。 您将需要使用兼容的 Scala 版本 (2.12.x)。
那么如果我们安装 sbt,我们如何确保 scala 版本是 2.12?
还是文档不准确,应该是“要使用特定版本的scala,需要自己下载特定的scala版本”?
根据mario-galic的回答,在 SCALA 的一键安装中说:
安装 Scala 一直是一项比必要的更具挑战性的任务,有可能赶走初学者。 我应该自己安装 Scala 吗? sbt? 其他一些构建工具? 像 Ammonite 这样更好的 REPL 怎么样? 哦,在我需要安装 Java 之前?
为了解决这个问题,Scala 中心于 2020 年 1 月与 Alexandre Archambault 签约,通过 coursier 增加一键安装 Scala。 例如,在 Linux 上,我们现在需要的是:
$ curl -Lo cs https://git.io/coursier-cli-linux && chmod +x cs &&./cs setup
Scala 版本在build.sbt
文件中指定,因此 SBT 将根据需要下载适当版本的 Z3012DCFF1477E1FEAAB817645ZC7。
我个人使用SDKMAN! 安装 Java 然后 SBT。
要理解的关键概念是系统范围安装和项目特定版本之间的区别。 系统范围的安装最终会在PATH
上的某个位置,例如
/usr/local/bin/scala
并且可以多种方式安装,个人推荐Scala的coursier一键安装
curl -Lo cs https://git.io/coursier-cli-linux && chmod +x cs && ./cs setup
项目特定版本由scalaVersion
sbt 设置指定,该设置将 Scala 下载到 coursier 缓存位置。 要查看特定项目使用的 Scala 版本和位置,请尝试show scalaInstance
inspect scalaInstance
[info] Task: sbt.internal.inc.ScalaInstance
[info] Description:
[info] Defines the Scala instance to use for compilation, running, and testing.
Scala 在次要版本中应该是二进制兼容的,因此 Spark 3 或针对任何 Scala 2.12.x 版本构建的任何其他软件应该与任何其他 Scala major.minor.patch
版本兼容。 请注意,内部编译器 API 不保证二进制兼容性,因此例如在发布编译器插件时,最佳做法是针对完整的特定 Scala 版本发布它。 例如注意 kind-projector 编译器插件是如何针对完整的 Scala 版本2.13.6
发布的
https://repo1.maven.org/maven2/org/typelevel/kind-projector_2.13.6/
而 scala-cats 应用程序级库针对任何 Scala 2.13.x
版本发布
https://repo1.maven.org/maven2/org/typelevel/cats-core_2.13/
同样,火花针对任何 Scala 2.12.x
版本发布
https://repo1.maven.org/maven2/org/apache/spark/spark-core_2.12/
关于系统范围的安装,我为快速切换版本所做的一个技巧是将scala-runners放在PATH
上,然后可以通过--scala-version
参数启动不同的版本
scala --scala-version 2.12.14
例如,使用 coursier 或 scala-runners,您甚至可以通过-C--jvm
快速切换 JDK
scala --scala-version 2.12.14 -C--jvm=11
对于一个项目,应该不需要手动下载 Scala 的特定版本。 sbt 直接或间接通过 IDE 将为您下载幕后的所有依赖项,因此唯一需要指定的是 sbt 设置scalaVersion
。
Using Python as analogy to Scala, and Pipenv as anology to sbt, then python_version
in Pipfile
is similar to scalaVersion
in build.sbt
. 在执行pipenv shell
和pipenv install
之后,您最终会得到项目特定的 shell 环境,其中项目特定的 Python 版本和依赖项。 sbt 类似地下载项目特定的 Scala 版本和基于build.sbt
的依赖项,尽管它不需要锁定文件或修改您的 Z2591C98B70119B5E2944 环境。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.