Caused by: java.lang.AbstractMethodError: spark.WordCount$1.call(Ljava/lang/Object;)Ljava/lang/Iterable;

Spark编译版本与运行环境的版本不一致导致

CHD Spark1.6升级为Spark2.1安装步骤


                                                          CHDspark1.6升级2.1

1、下载csd安装包(注意版本及校验文件一致)

http://archive.cloudera.com/spark2/csd/


CHD Spark1.6升级为Spark2.1安装步骤


2、下载parcels包

http://archive.cloudera.com/spark2/parcels/2.1.0.cloudera1/


CHD Spark1.6升级为Spark2.1安装步骤


3、开始安装,集群可以停也可以不停

上传csd包到集群所有机器的/opt/cloudera/csd下,如果没有,就新建;如果有其他安装包,可以删掉

# cd /opt/cloudera/csd         #目录下修改文件权限

# chown cloudera-scm:cloudera-scm SPARK2_ON_YARN-2.1.0.cloudera2.jar

# chmod 644 SPARK2_ON_YARN-2.1.0.cloudera2.jar


CHD Spark1.6升级为Spark2.1安装步骤


4、上传parcel包到主节点机器(master)的/opt/cloudera/parcel-repo下,该目录下的其他安装包不可删除!一般都会有manifest.json,把它改名备份即可。用刚下载的替代,然后SPARK2-2.1.0.cloudera2-1.cdh5.7.0.p0.171658-el7.parcel.sha1一定记得改为SPARK2-2.1.0.cloudera2-1.cdh5.7.0.p0.171658-el7.parcel.sha

CHD Spark1.6升级为Spark2.1安装步骤

5、在主节点执行重启命令

# service cloudera-scm-agent restart

# service cloudera-scm-server restart


6、CM主节点启动后,点击主机->Parcel页面,就会有spark2的选项。选择后点击分配,等待分配完成后**


CHD Spark1.6升级为Spark2.1安装步骤

CHD Spark1.6升级为Spark2.1安装步骤


7、如果报一下配置问题,是Jdk版本与快捷方式,这里简要说明记录一下

CHD Spark1.6升级为Spark2.1安装步骤

CHD Spark1.6升级为Spark2.1安装步骤


8、添加spark2服务

CHD Spark1.6升级为Spark2.1安装步骤


CHD Spark1.6升级为Spark2.1安装步骤

此时再看,就会显示2.1.0


CHD Spark1.6升级为Spark2.1安装步骤




======================启动配置分割线================================

                                                  Spark2的启动问题:



此时可能启动会有问题,需要配置相应的环境变量以及依赖关系,大家通过spark2-env.sh文件也能看到依赖的classpath文件的jar包。

# cd /etc/spark2/conf.cloudera.spark2_on_yarn    把classpath文件复制

/opt/cloudera/parcels/SPARK2-2.1.0.cloudera2-1.cdh5.7.0.p0.171658/etc/spark2/conf.dist 目录下

# cp /etc/spark2/conf.cloudera.spark2_on_yarn/classpath.txt /opt/cloudera/parcels/SPARK2-2.1.0.cloudera2-1.cdh5.7.0.p0.171658/etc/spark2/conf.dist

CHD Spark1.6升级为Spark2.1安装步骤


然后通过spark2-shell启动


CHD Spark1.6升级为Spark2.1安装步骤


再次执行提交的jar包,

CHD Spark1.6升级为Spark2.1安装步骤


至此,CDH spark1.6 升级为spark2.1 成功!


====================华丽的补充,spark操作数据库时的依赖包问题=============

Exception in thread "main" java.sql.SQLException: No suitabledriver


CHD Spark1.6升级为Spark2.1安装步骤


方法1:     修改spark-env.sh 配置环境变量的jar包路径,根据实际数据库配,我这里是oracle的

export SPARK_CLASSPATH=$SPARK_CLASSPATH:/usr/java/ojdbc7.jar


CHD Spark1.6升级为Spark2.1安装步骤

此时再次执行时就可以看到(可以顺利运行,警告信息是说过时方式)


CHD Spark1.6升级为Spark2.1安装步骤


方法2:     上面记得应该是把路径配置文件复制到

/opt/cloudera/parcels/SPARK2-2.1.0.cloudera2-1.cdh5.7.0.p0.171658/etc/spark2/conf.dist 下的

里面的classpath.txt配置的文件,看加载的信息我们也知道会加载里面的jar包,在里面配置也可以(需要注意的是默认路径,不要随便放。在classpath.txt里面有的路径下放置)

把需要的jar包复制到/opt/cloudera/parcels/CDH-5.8.2-1.cdh5.8.2.p0.3/jars/ 目录下并修改 classpath.txt文件

/opt/cloudera/parcels/CDH-5.8.2-1.cdh5.8.2.p0.3/jars/ojdbc7.jar

CHD Spark1.6升级为Spark2.1安装步骤

在末尾加上jar包路径即可

这时候执行也没有警告信息。如果大家仔细看加载的类包就可以看到我们的驱动加进来了的


CHD Spark1.6升级为Spark2.1安装步骤


方法3:    最后一个,就是大家什么配置都没有改,那只有改shell脚本了

CHD Spark1.6升级为Spark2.1安装步骤

CHD Spark1.6升级为Spark2.1安装步骤

这样配置执行也是没有警告信息的。



注意:没事做也不要都设置,2和3同时配置没问题,但是1和3同时配置就会报错Found bothspark.driver.extraClassPath and SPARK_CLASSPATH. Use only the former.。这里也可以看出1的方式是过时的了。


CHD Spark1.6升级为Spark2.1安装步骤


最后,如果spark提交运行的方式是整改集群,当然jar也要分发到集群的每一台机器

CHD Spark1.6升级为Spark2.1安装步骤



好了,关于CDH spark1.6升级为spark2.1,以及spark2.1的一些配置和依赖包的添加配置都说完了。正式开启spark2.1的应用吧CHD Spark1.6升级为Spark2.1安装步骤









相关文章:

  • 2021-04-30
  • 2022-03-06
  • 2021-11-16
  • 2021-10-02
  • 2022-02-02
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-09-26
  • 2022-12-23
  • 2021-11-18
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案