【问题标题】:Using SBT on a remote node without internet access via SSH在没有通过 SSH 访问互联网的远程节点上使用 SBT
【发布时间】:2013-06-07 09:56:43
【问题描述】:

我正在尝试在远程机器上使用 Scala 编写Spark 程序,但该机器无法访问互联网。由于我使用的是 Hadoop 的预构建版本,因此我能够运行预编译的示例:

[user@host spark-0.7.2]$ ./run spark.examples.LocalPi

但我无法编译任何在机器上引用 spark 的东西:

$ scalac PiEstimate.scala
PiEstimate.scala:1: error: not found: object spark
import spark.SparkContext
       ^

通常情况下,我会使用 SBT 来处理任何依赖项,但机器无法访问 Internet,并且无法通过 SSH 隧道访问 Internet。

是否可以在无法访问 Internet 的远程计算机上编译 SBT 项目?或者我如何手动将 Spark 依赖项链接到 Scala 编译器。

【问题讨论】:

    标签: scala sbt offline remote-access apache-spark


    【解决方案1】:

    如果您通过scalac 编译您的Spark 程序,您必须将Spark 的jar 添加到scalac's classpath;我认为这应该可行:

    scalac -classpath "$SPARK_HOME/target/scala-*/*.jar" PiEstimate.scala
    

    【讨论】:

    • 注意:可以在“离线模式”下使用 sbt:this thread 看起来很相关。另一种选择是在本地机器上编译你的程序,然后scp 编译的类到远程机器上。
    【解决方案2】:

    我知道这是一篇旧帖子,但我最近不得不处理这个问题。我通过从我的 .sbt 文件中删除依赖项并在 my-project-dir/lib 下添加 spark jar (spark-home/assembly/target/scala.2-10/spark-[...].jar) 来解决它目录。您也可以使用unmanagedBase = file("/path/to/jars/") 指向它,然后我可以像往常一样使用 sbt 包

    【讨论】:

      猜你喜欢
      • 2014-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-24
      • 2016-10-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多