我在做什么:
我遵循了哪些步骤:
sudo build/mvn -Pyarn -Phadoop-2.4 -Dhadoop.version=2.4.0 -DskipTests clean packag
和sbt/sbt clean assembly
spark/lib
:cassandra-driver-core2.1.1.jar 和spark-cassandra-connector_2.11-1.4.1.jar
将jar文件路径添加到conf/spark-defaults.conf
,如
spark.driver.extraClassPath \
~/path/to/spark-cassandra-connector_2.11-1.4.1.jar:\
~/path/to/cassandra-driver-core-2.1.1.jar
我如何运行shell:
运行./bin/cassandra
之后,我就像 -
sudo ./bin/pyspark
并尝试使用sudo ./bin/spark-shell
我在做什么查询
sqlContext.read.format("org.apache.spark.sql.cassandra")\
.options(table="users", keyspace="test")\
.load()\
.show()
问题:
java.lang.NoSuchMethodError:\
scala.Predef$.$conforms()Lscala/Predef$$less$colon$less;
但org.apache.spark.sql.cassandra
出现在我下载的spark-cassandra-connecter.jar中。
以下是完整的Log Trace
我尝试了什么:
--packages
和--driver-class-path
以及--jars
选项添加2个罐子。 我一直在考虑的问题 -
我对spark和cassandra很新,所以我真的需要一些建议!花了好几个小时,这可能是微不足道的。
答案 0 :(得分:4)
一些注意事项
您正在为2.10构建spark并使用Spark Cassandra Connector库2.11。要为2.11构建spark,您需要使用-Dscala-2.11
标志。这很可能是导致错误的主要原因。
接下来实际包含项目中的连接器,只包括没有依赖项的核心库是不够的。如果您超过第一个错误,您很可能会看到缺少的deps中的其他类未找到错误。
这就是为什么建议使用Spark Packages网站和--packages
标志。这将包括一个“fat-jar”,它具有所有必需的依赖项。看到
http://spark-packages.org/package/datastax/spark-cassandra-connector
对于Spark 1.4.1和pyspark,这将是
//Scala 2.10
$SPARK_HOME/bin/pyspark --packages datastax:spark-cassandra-connector:1.4.1-s_2.10
//Scala 2.11
$SPARK_HOME/bin/pyspark --packages datastax:spark-cassandra-connector:1.4.1-s_2.11
您永远不必使用--packages
方法手动下载jar。
不要使用spark.driver.extraClassPath,它只会向驱动程序添加依赖项远程代码将无法使用依赖项。