Apache spark 使用纱线、火花和火花卡桑德拉连接器时,如何解决番石榴11.0.2和16.0之间的冲突?

Apache spark 使用纱线、火花和火花卡桑德拉连接器时,如何解决番石榴11.0.2和16.0之间的冲突?,apache-spark,yarn,spark-cassandra-connector,Apache Spark,Yarn,Spark Cassandra Connector,当我执行以下命令时,我的纱线版本是hadop-2.4.0.x,spark是spark-1.5.1-bin-hadoop2.4,spark-cassandra连接器是spark-cassandra-connector_2.10-1.5.0-M2: bin/spark-shell --driver-class-path $(echo lib/*.jar | sed 's/ /:/g') --master yarn-client --deploy-mode client --conf spark.

当我执行以下命令时,我的纱线版本是
hadop-2.4.0.x
,spark是
spark-1.5.1-bin-hadoop2.4
,spark-cassandra连接器是
spark-cassandra-connector_2.10-1.5.0-M2

bin/spark-shell --driver-class-path $(echo lib/*.jar | sed 's/ /:/g')  --master yarn-client 
--deploy-mode client --conf spark.cassandra.connection.host=192.21.0.209 
--conf spark.cassandra.auth.username=username --conf spark.cassandra.auth.password=password --conf spark.sql.dialect=sql 
--jars lib/guava-16.0.jar,spark-cassandra-connector_2.10-1.5.0-M2.jar,lib/cassandra-driver-core-2.2.0-rc3.jar
启动后,我在提示符下输入以下scala:

import org.apache.spark.sql.cassandra.CassandraSQLContext
import org.apache.spark.sql.{DataFrame, SaveMode}
import org.apache.spark.{Logging, SparkConf, SparkContext}
import org.joda.time.{DateTime, Days, LocalDate}
val cc = new CassandraSQLContext(sc)

val rdd: DataFrame = cc.sql("select user_id,tag_models,dmp_province," +
"zp_gender,zp_age,zp_edu,stg_stage,zp_income,type " +
"from user_center.users_test") 
我犯了一个典型的错误:

Caused by: java.lang.NoSuchMethodError:  
com.google.common.util.concurrent.Futures.withFallback
(Lcom/google/common/util/concurrent/ListenableFuture;
Lcom/google/common/util/concurrent/FutureFallback;
Ljava/util/concurrent/Executor;)
Lcom/google/common/util/concurrent/ListenableFuture;
google
stackoverflower
中搜索此错误后,我知道
guava
的不同版本之间的冲突导致了此错误,并找到use
guava-11.0.2
但use
guava-16.0.1

如何解决此类错误,敬请指教

更新

我很抱歉测试了很长时间


现在,对于spark submit,我在我的测试纱线簇下成功地测试了此分辨率。在Hadoop配置中,将以下属性添加到您的
Hadoop env.sh

HADOOP_USER_CLASSPATH_FIRST=true

在Spark配置中,还有一个属性可以将其设置为true
Spark.driver.userClassPathFirst
,但它仍然是一个实验性的属性,仅在集群模式下使用(请查看)。就我个人而言,我没有尝试过这个属性,但由于它在文档中出现,我认为值得一提

它对我不起作用。既不是env变量也不是spark属性。这很奇怪。。。我再试一次,告诉你确切的情况how@msemelman在执行
sparkshell
命令之前,您是否尝试过导出HADOOP\u CLASSPATH=/PATH/to/SPARK/CASSSANDRA/CONNECTER/JAR?我的伙计,您已经开始了。如果你碰巧找到了答案,请与我们分享。我认为这条路是在sbt组装阶段进行的。@msemelman对不起,我昨天没有来这里,你有相同的问题吗?@msemelman,我测试了方法,正如#user1314742所说,没有任何变化@abelard2008我在我的答案中添加了新的注释,请尝试导出注释中提到的内容。@abelard2008还有一件事,在你的答案中是
$(echo lib/*.jar | sed's//:/g')
,还是你的意思是
$(ls lib/*.jar | sed's/:/g')