【问题标题】:Running Spark sbt project without sbt?在没有 sbt 的情况下运行 Spark sbt 项目?
【发布时间】:2014-07-04 10:21:46
【问题描述】:

我有一个可以从 sbt 控制台运行的 Spark 项目。但是,当我尝试从命令行运行它时,我在线程“main”java.lang.NoClassDefFoundError:org/apache/spark/SparkContext 中得到异常。这是意料之中的,因为 Spark 库在 build.sbt 中列为 provided

如何配置,以便我可以从命令行运行 JAR,而不必使用 sbt 控制台?

【问题讨论】:

  • 您可以使用github.com/sbt/sbt-assembly 来构建一个包含所有依赖项的jar。
  • @lpeipiora - 我确实在使用 sbt-assembly,但 spark jar 被标记为 provided,因此不包含在程序集中
  • 你能发布你的示例构建,我可以帮你回答吗?我的猜测是一些“编译->提供”的魔法说明符会起作用。

标签: scala sbt apache-spark


【解决方案1】:

要独立运行 Spark,您需要构建 Spark 程序集。 在 spark 根目录上运行 sbt/sbt assembly。这将创建:assembly/target/scala-2.10/spark-assembly-1.0.0-SNAPSHOT-hadoop1.0.4.jar

然后您使用依赖项构建您的作业 jar(使用 sbt 程序集或 maven-shade-plugin)

您可以使用生成的二进制文件从命令行运行 Spark 作业:

ADD_JARS=job-jar-with-dependencies.jar SPARK_LOCAL_IP=<IP> java -cp spark-assembly-1.0.0-SNAPSHOT-hadoop1.0.4.jar:job-jar-with-dependencies.jar com.example.jobs.SparkJob

注意:如果您需要其他 HDFS 版本,则需要在构建程序集之前执行其他步骤。见About Hadoop Versions

【讨论】:

    【解决方案2】:

    使用sbt assembly plugin 我们可以创建一个jar。完成后,您可以使用java -jar 命令简单地运行它

    For more details refer

    【讨论】:

      猜你喜欢
      • 2011-11-03
      • 2014-06-29
      • 2017-09-02
      • 2021-06-30
      • 2022-07-01
      • 2018-05-30
      • 1970-01-01
      • 2015-11-24
      • 1970-01-01
      相关资源
      最近更新 更多