使用Guava运行Spark 2.2.0> 16.0.1抛出异常

时间:2017-12-09 12:37:25

标签: scala maven hadoop apache-spark spark-cassandra-connector

我看到火花通过其中一个hadoop依赖(假设)传递Guava 16.0.1但是在我的Maven项目中我还需要cassandra-unit来强制Guava 21.0然后在我尝试用文件读取文件时打破火花sparkSession.sparkContext.textfile方法。我想知道是否有其他人遇到过类似的问题以及你是如何解决的?这是堆栈跟踪:

*** RUN ABORTED ***
  java.lang.IllegalAccessError: tried to access method com.google.common.base.Stopwatch.<init>()V from class org.apache.hadoop.mapred.FileInputFormat
  at org.apache.hadoop.mapred.FileInputFormat.getSplits(FileInputFormat.java:312)
  at org.apache.spark.rdd.HadoopRDD.getPartitions(HadoopRDD.scala:194)
  at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:252)
  at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:250)
  at scala.Option.getOrElse(Option.scala:121)
  at org.apache.spark.rdd.RDD.partitions(RDD.scala:250)
  at org.apache.spark.rdd.MapPartitionsRDD.getPartitions(MapPartitionsRDD.scala:35)
  at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:252)
  at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:250)
  at scala.Option.getOrElse(Option.scala:121)
  ...

更新:正如评论中所建议的那样,这可能与another stackoverflow question重复。我尝试强制版本2.7.2和2.9.0 hadoop-mapreduce-client-corehadoop-common。我不认为你可以做到这一点虽然因为这打破了其他地方:java.lang.NoClassDefFoundError: org/apache/commons/configuration/Configuration这是一个超级旧的1.10版commons-configuration中的一个类,显然其他东西依赖。这就是恶性循环......

更新:最初我的代码使用的是一个使用SparkContext api来调用sparkSession.sparkContext.textfile方法的库。当我使用SparkSession切换到sparkSession.read api时,问题不再明显。

0 个答案:

没有答案