我试图在Mesos集群上执行Spark作业,依赖于Spark -cassandra-connector库,但它一直失败
Exception in thread "main" java.lang.NoClassDefFoundError: com/datastax/spark/connector/package$
我从spark文档中了解到
将jar和文件复制到执行节点上每个SparkContext的工作目录中。...用户还可以通过使用——packages提供以逗号分隔的maven坐标列表来包含任何其他依赖项。
但是好像只分发了pucker-assembly-1.0.jar
task jar。
我正在运行spark 1.6.1与scala 2.10.6。下面是我正在执行的spark-submit
命令:
spark-submit --deploy-mode cluster
--master mesos://localhost:57811
--conf spark.ssl.noCertVerification=true
--packages datastax:spark-cassandra-connector:1.5.1-s_2.10
--conf spark.cassandra.connection.host=10.0.1.83,10.0.1.86,10.0.1.85
--driver-cores 3
--driver-memory 4000M
--class SimpleApp
https://dripit-spark.s3.amazonaws.com/pucker-assembly-1.0.jar
s3n://logs/E1SR85P3DEM3LU.2016-05-05-11.ceaeb015.gz
那么为什么spark-cassandra-connector
不分配给我所有的火花执行器?
您应该使用正确的Maven坐标语法:
--packages com.datastax.spark:spark-cassandra-connector_2.10:1.6.0
看- https://mvnrepository.com/artifact/com.datastax.spark/spark-cassandra-connector_2.10
- http://spark.apache.org/docs/latest/submitting-applications.html
- http://spark.apache.org/docs/latest/programming-guide.html using-the-shell