部署jar到spark上运行

初次接触spark,还没有入门,能够成功将jar部署到spark平台上并且运行,必须感谢博主Fang20160214

1.环境及工具

系统:ubuntu14.04
spark:2.1.0 (单机环境)
scala: 2.12.1
开发工具:IntelliJ IDEA Community
构建工具:sbt
添加SDK
File——Project Structure——SDKs,然后”+“选择”JDK”
构建jar包
File——Project Structure——Artifacts,然后有个“+”,设置好了之后点击“OK”;
菜单栏上面Build——Build Artifacts…,然后可以选择Build,ReBuild,Clean,Edit
如果intellij下载的是没带jdk的版本,同样的类似步骤在SDKs中添加,可以配置jdk。

然后就可以将生成的jar部署到spark环境中运行啦,命令:
首先进入到spark安装目录下,然后执行

./bin/spark-submit --name "nlp run on spark" --master spark://localhost:8080 --executor-memory 2G --class com.sjtu.spark.testNLP /home/username/Documents/spark-nlp.jar /home/username/Documents/spark-nlp/out/ /home/username/Documents/spark-nlp/out/output
2.遇到的问题及解决办法

(1)必须添加SDK,否则intellij将不会对scala文件进行编译,产生的jar部署到spark环境中,运行时候将会报错:找不到将要运行的类(的确这样,都没有编译产生,就肯定找不到)
(2)scala版本问题
报错:
Exception in thread “main” java.lang.NoSuchMethodError: scala.reflect.api.JavaUniverse.runtimeMirror(Ljava/lang/ClassLoader;)Lscala/reflect/api/JavaMirrors$JavaMirror;
[这一步骤是错误的,不用这样做,只需要在build.sbt中对scalaVersion进行设置]尝试在libraries中添加了一个scala-reflect.jar,于是从scala2.12.1的lib目录下找到了,添加到工程的libraries中,依然报错。
后来发现应该是spark2.1.0所需要的scala版本与系统安装的scala版本2.12.1可能不对应,于是将scala2.12.1安装目录下的jar全部添加到工程的libraries中,还是不对,报错:
java.lang.BootstrapMethodError: java.lang.NoClassDefFoundError: scala/runtime/SymbolLiteral
最终参照网页http://www.scala-sbt.org/0.12.4/docs/Howto/scala.html
设置scala的版本,在sbt.build文件中添加scalaVersion := "2.11.8"
这时候,intellij会自动下载2.11.8的scala的相关文件。最后,将jar部署到spark中,运行正常。
这里写图片描述
sbt或者maven,都是类似的,注意scala的版本即可。涉及到的jar也就是这几个:
这里写图片描述
备注:另外的设置

sparkVersion := "2.1.0"

(3)添加依赖的jar包
命令中还需要添加–jars **.jar

./bin/spark-submit --name "nlp run on spark" --master spark://localhost:8080 --jars /home/username/Documents/stanford-english-corenlp-models-current.jar --executor-memory 2G --class com.sjtu.spark.testNLP /home/username/Documents/spark-nlp.jar /home/username/Documents/spark-nlp/out/ /home/username/Documents/spark-nlp/out/output

如果有多个jar,jar之间用逗号分隔。或者使用其他办法:对spark.executor.extraClassPath进行设值;或者sbt-assembly的方式。[参考网页3]

参考网页
1.http://stackoverflow.com/questions/16407042/scala-is-2-10-1-but-sbt-console-is-not
2.http://blog.csdn.net/weipanp/article/details/45098669
3.Spark任务提交jar包依赖解决方案http://blog.csdn.net/wzq294328238/article/details/48054525

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值