Spark uses s3a: java.lang.NoSuchMethodError



我正在做一些关于spark_with_hadoop2.7(2.4.3(,hadoop(3.2.0(和ceph发光的组合。当我尝试使用Spark访问CEPH(例如,在Shell上启动spark-sql(时,如下图所示:

 INFO impl.MetricsSystemImpl: s3a-file-system metrics system started
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.hadoop.security.ProviderUtils.excludeIncompatibleCredentialProviders(Lorg/apache/hadoop/conf/Configuration;Ljava/lang/Class;)Lorg/apache/hadoop/conf/Configuration;
        at org.apache.hadoop.fs.s3a.S3AUtils.getAWSAccessKeys(S3AUtils.java:740)
        at org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider.<init>(SimpleAWSCredentialsProvider.java:58)
        at org.apache.hadoop.fs.s3a.S3AUtils.createAWSCredentialProviderSet(S3AUtils.java:600)

对于 NoSuchMethodError,最有可能是因为根据how-do-i-fix-a-a-nosuchmethoderror。编译的类版本不同。

访问Ceph,与AWS相关的JARS aws-java-sdk-bundle-1.11.375.jarhadoop-aws-3.2.0.jar $HADOOP_HOME/share/hadoop/tools/lib下实际使用。我在下面进行了操作:

1,将这两个罐子复制到$SPARK_HOME/jars
2,修改$HADOOP_HOME/etc/hadoop/hadoop-env.sh以添加下面的语句:

export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HADOOP_HOME/share/hadoop/tools/lib/*

通过在上面的步骤中,我可以启动HDFS访问CEPH,例如,我可以使用hdfs dfs -ls在Ceph Bucket下列出文件夹。它证明了与AWS相关的罐子的工作正常。(按照我的理解(。

但是,当我调用Spark时,为什么关于AWS S3A投掷的例外?

所有的hadoop-* jar需要在版本上100%匹配,否则您可以看到这样的堆栈痕迹。

有关更多信息,请重读

相关内容

  • 没有找到相关文章

最新更新