关于spark利用jar包跑job的一些总结(二)

利用scalac以及jar命令得到spark上可运行的jar包

需要提前准备的:
1. JDK环境。
2. Scala环境,在此不多赘述,自行查找配置。(个人建议用2.10.*版本。之前用2.11版本,发现与spark-assembly那个jar包中的Scala环境不匹配,出现奇葩的错误)。
3. spark api即spark-assembly*.jar包(找不到的可以在服务器上或者你的环境里输入 find -name spark-*.jar)。

进入正文:
(在windows与linux环境下命令一致,就不分开讨论)

  1. 首先编写你要在spark上运行的工程代码,存为scala文件(这里还以上一篇的WordCount工程代码为例)。
  2. 利用scalac,对scala文件进行编译生成.class文件(此时要把spark-assembly包加入依赖):
    scalac -classpath [spark-assembly*.jar全路径] [YOUR.scala]
    上例中,我把spark-assembly*.jar和WordCount.scala放在同一目录下,所以直接用命令:
    scalac -classpath spark-assembly-1.6.0-hadoop2.7.1-U4.jar WordCount.scala
    这个时候会得到不同个数的.class文件
  3. 利用jar命令,将得到的class文件封装成为jar包
    jar cf [你要得到的jar文件] [.class文件的路径]
    上例中,class文件在同一目录下,所以命令为:
    jar cf WordCount.jar *.class
最终得到的WordCount.jar即为所要jar包,可以在spark上运行。

(上述过程中,所有文件均可以自己设定路径,命令仅为参考,更多功能请自行搜索scalac与jar命令)


在开发过程中遇到一个奇葩的问题:
Exception in thread “main” java.lang.NoSuchMethodError: scala.runtime.ObjectRef.create(Ljava/lang/Object;)Lscala/runtime/ObjectRef;
这里写图片描述
最后经过查找问题,得知是scala版本与spark-assembly的jar包中scala版本不搭导致的。
更换scala版本即可。
具体情况可以参考http://blog.sina.com.cn/s/blog_4a97c77f0102whg3.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值