我试图熟悉Scala。我正在使用macOS。
我已经使用brew install scala
安装了scala,这是无忧无虑的,一旦完成,我只需在scala
发出scala>
即可启动scala REPL }提示
我现在想要导入一些包,所以我尝试:
import org.apache.spark.sql.Column
并且毫不奇怪它失败了
错误:对象apache不是包org的成员
这是有道理的,它怎么知道从哪里获得该包?事实是,我不知道我需要做些什么来制作这个包。我可以从命令行做些什么来让我import org.apache.spark.sql.Column
?
我已经google了一下,但没有找到任何以无术语的方式解释的东西。在这里完成Scala noob,所以不受欢迎的反应将不胜感激。
答案 0 :(得分:1)
您可以使用classpath
使lib可用,即在本地下载jar并使用以下命令(此处我使用Apache IO lib从scala
提示符移动文件)< / p>
C0:Desktop pvangala$ scala -cp /Users/pvangala/Downloads/commons-io-2.6/commons-io-2.6.jar
Welcome to Scala 2.12.5 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_161).
Type in expressions for evaluation. Or try :help.
scala> import java.io.File
import java.io.File
scala> val src = new File("/Users/pvangala/Downloads/commons-io-2.6-bin.tar")
src: java.io.File = /Users/pvangala/Downloads/commons-io-2.6-bin.tar
scala> val dst = new File("/Users/pvangala/Desktop")
dst: java.io.File = /Users/pvangala/Desktop
scala> org.apache.commons.io.FileUtils.moveFileToDirectory(src, dst, true)
答案 1 :(得分:1)
以下是两种使用我所知的依赖项启动REPL的方法:
console
启动具有这些依赖关系的REPL 您可以使用build.sbt
创建一个单独的目录,您可以在其中设置
scalaVersion := "2.11.12"
然后复制
libraryDependencies += "org.apache.spark" %% "spark-sql" % "2.3.0"
来自MavenCentral的片段。然后,您可以使用sbt console
运行REPL。请注意,这将创建project
和target
子目录,因此它“留下痕迹”,您不能像独立的scala
- repl一样使用它。您也可以省略build.sbt
,并通过在SBT-shell本身中键入它们来添加库依赖项。
或者,您可以使用专为此目的而创建的Ammonite REPL。
答案 2 :(得分:0)
如果你想使用火花东西,我建议你使用火花装置附带的火花壳。我不知道macOS所以我无法帮助你安装Spark那里。
对于普通的Scala,我建议使用包含语法的ammonite http://ammonite.io/#Ammonite-REPL来提取包/依赖项。
答案 3 :(得分:0)
如果你想使用spark,你应该使用spark-shell
而不是scala REPL。它具有几乎相同的行为,但默认包含所有spark依赖项。
您应该从here
下载spark二进制文件然后,如果您使用 Linux ,则应创建指向下载文件夹的变量SPARK_HOME,并将其bin文件夹包含在PATH中。
然后你可以使用命令spark-shell
在任何控制台中启动它在 Windows 中我不确定,但我认为你应该有一个spark-shell.cmd文件或类似的东西,你可以使用它来启动spark-shell,
答案 4 :(得分:0)
我在Windows中执行了以下操作:
for /f "tokens=*" %%a in ('java -jar coursier fetch -p "com.lihaoyi::requests:0.2.0" "com.lihaoyi::upickle:0.7.5"') do set SCP=%%a
scala -nc -classpath %SCP% %1 %2 %3
除了此处列出的两个库之外,您还可以使用数量不限的其他所需库。但是,它们必须在Maven Central中可用。 %1
可以是scala脚本(扩展名为“ .sc”)。但是您可以将其保留为空,REPL将从类路径上的库开始。