现象描述:任务依赖jar复制到/opt/emr/current/spark/jars/
,但还是报错ClassNotFoundException。
原因剖析:集群默认配置了spark.yarn.archive,会读hdfs上的tar.gz包hdfs://master-1-1.emr-xxx.cn-beijing.emr-volces.com:8020/user/spark/spark-jars.tar.gz
解决方案:
方法1 将spark.yarn.archive的value置空,此时将读/opt/emr/current/spark/jars/
目录下的jars。
方法2 压缩spark-jars.tar.gz包,并替换hdfs上的目录,压缩方式:cd /opt/emr/current/spark/jars/ && tar -zcvf /opt/new/spark-jars.tar.gz --exclude=spark-jars.tar.gz \*