hadoop,spark:java.lang.nosuchfielderror:token\u kind

xesrikrc  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(680)

我想和大家分享一下我最近遇到的一个有趣的错误:

Exception in thread "main" java.lang.NoSuchFieldError: TOKEN_KIND
at org.apache.hadoop.crypto.key.kms.KMSClientProvider$KMSTokenRenewer.handleKind(KMSClientProvider.java:166)
at org.apache.hadoop.security.token.Token.getRenewer(Token.java:351)
at org.apache.hadoop.security.token.Token.renew(Token.java:377)
at org.apache.spark.deploy.security.HadoopFSCredentialProvider$$anonfun$getTokenRenewalInterval$1$$anonfun$5$$anonfun$apply$1.apply$mcJ$sp(HadoopFSDelegationTokeProvider.scala:119)

我尝试spark2向cloudera集群上的远程驱动程序主机提交作业,如下所示:

spark = SparkSession.builder
   .master("yarn")
   .config("cluster")
   .config("spark.driver.host", "remote_driver_host")
   .config("spark.yarn.keytab", "path_to_pricnipar.keytab")
   .config("spark.yarn.principal", "principal.name") \
   .config("spark.driver.bindAddress", "0.0.0.0") \
   .getOrCreate()

cloudera集群上的apachespark和hadoop版本分别是:2.3.0和2.6.0。

vecaoik1

vecaoik11#

所以问题的原因很简单,就是spark本地二进制文件与远程spark驱动程序版本不匹配。我在本地安装了spark 2.4.5,在cloudera上是2.3.0,在将版本调整到2.3.0之后,问题解决了,spark作业成功完成。

相关问题