Spark运行在EMR Jar包(guava)冲突问题

问题描述:


     运行环境:

         EMR  使用Spark 1.6.3, 这个版本的Spark主要依赖的包
  • guava-14.0.1
  • commons-configuration-1.6
     问题:

         Spark程序运行在EMR的时候发生Jar包冲突(主要是guava和commons-configuration两个包发生冲突), 程序中需要使用guava-20.0以及commons-configuration-1.10两个包,
     本地运行没有问题,放在EMR上运行则报如下错误:

     
 java.lang.NoSuchMethodError: org.apache.commons.configuration.MapConfiguration.<init>(Ljava/util/Properties;)V

    

        这应该是程序在运行时默认使用了的EMR本地的jar包(可能由于配置问题,查看了配置文件没找到相关配置),由于不知道EMR的jar包如何更新,遂采用以下方式解决

解决方案:


     在spark-submit的时候增加 :
          --driver-class-path $PROJECT_HOME/guava-20.0.jar:$PROJECT_HOME/commons-configuration-1.10.jar \
    --jars $PROJECT_HOME/guava-20.0.jar,$PROJECT_HOME/commons-configuration-1.10.jar \
     即可使用自己的jar包运行


     目前看到的对这两个参数的解释,并没有太懂
       
--jars逗号分隔的本地jar包,包含在driver和executor的classpath下
--driver-class-path传给driver的额外的类路径
2017-07-13

Property Name: spark.driver.extraClassPath
Meaning: Extra classpath entries to prepend to the classpath of the driver. 
Note: In client mode, this config must not be set through theSparkConf directly in your application, because the driver JVM has already started at that point. Instead, please set this through the --driver-class-path command line option or in your default properties file.

 
  找到官方文档对  --driver-class-path 的介绍,应该是: 加在 drvier的classpath之前的额外classpath入口, 非client模式下也可通过spark的default.conf的spark.driver.extraClassPath参数进行配置


(持续更新中...)



参考 
     http://www.aboutyun.com/thread-20517-1-1.html
     https://github.com/endymecy/spark-config-and-tuning/blob/master/config.md
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值