我有一个Spark项目,我可以从sbt控制台运行。但是,当我尝试从命令行运行它时,我在线程“main”java.lang.NoClassDefFoundError:org / apache / spark / SparkContext 中得到异常。这是预期的,因为Spark库在 build.sbt 中列为提供。
如何配置东西,以便我可以从命令行运行JAR,而不必使用sbt控制台?
答案 0 :(得分:3)
要独立运行Spark,您需要构建Spark程序集。
在火花根目录上运行sbt/sbt assembly
。这将创建:assembly/target/scala-2.10/spark-assembly-1.0.0-SNAPSHOT-hadoop1.0.4.jar
然后使用依赖项构建工作jar(使用sbt assembly或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
答案 1 :(得分:1)
使用sbt assembly plugin
我们可以创建一个jar。完成后,您只需使用java -jar
命令