升级spark2.x版本问题记录

spark升级过程中,和开发中有可能因java版本、spark版本、 scala版本、相关jar包版本不一致或不匹配。导致出一些不应该发生的问题。记录下,以后面采坑。

版本不一致

java版本不一致

报错:

java.lang.UnsupportedClassVersionError: com/immomo/recommend/RedisDao: Unsupported major.minor version 52.0

处理:该问题一般是spark的java版本与作业编译的java版本不一致,建议将本地java版本改为与spark一致的版本(目前集群是1.7.0_71)。

scala版本不一致

报错:

java.lang.NoSuchMethodError: scala.reflect.api.JavaUniverse.runtimeMirror(Ljava/lang/ClassLoader;)Lscala/reflect/api/
    JavaMirrors JavaMirror;


处理:该报错就是本地使用的scala版本与集群的不一致,建议把本地scala版本替换为集群版本scala 2.11.8

本地jar包跟hdfs远程的不一致

报错:

local class incompatible: stream classdesc serialVersionID = -6965587383804958479374, local class serialVersionID = -2231952633394736947

spark版本不一致

报错:
Exception in thread “main” java.lang.NoSuchMethodError: org.apache.spark.SparkContext.assertNotStopped()at org.apache.spark.sql.SparkSession.(SparkSession.scala:80)
处理:检查bash和spark-env.sh中的SPARK_HOME,看是不是目标版本,如果不是就修改。这个问题在spark新老版本迁移中可能出现。

hive metastore与spark的编译hive版本不一致

(spark sql 插入语句失败)
报错:

Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: Unable to alter table. Invalid method name: 'alter_table_with_cascade' Caused by: org.apache.thrift.TApplicationException: Invalid method name: 'alter_table_with_cascade'

解决方法:任务启动加参数

--conf spark.sql.hive.metastore.version=“0.14.0” --conf spark.sql.hive.metastore.jars=maven

在hdfs上创建文件,并在SPARK_HOME/conf/hive-site.xml设置对应参数:hive.exec.stagingdir值为/tmp/hive/spark-${user.name}
该参数权限设置为777
这个maven涉及包有~/.m2 ~/.ivy2的jar文件

赞(2) 打赏
特别声明:除特殊标注,本站文章均为原创,遵循CC BY-NC 3.0,转载请注明出处。三伏磨 » 升级spark2.x版本问题记录

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏