无法运行Spark CassandraTest示例

时间:2014-06-05 19:49:45

标签: cassandra apache-spark

我在尝试编写自己的Spark应用程序时开始遇到这个问题,并最终退回到试图让示例运行 - 这是我无法做到的。

我跑了bin/run-example CassandraTest localhost localhost 9160并收到以下错误。 (之前我跑了bin/run-example CassandraTest localhost 9160但得到了ArrayOutOfBoundsException,所以我只是把东西放到了第一个位置)

Exception in thread "main" java.lang.IncompatibleClassChangeError: Found interface org.apache.hadoop.mapreduce.JobContext, but class was expected
at org.apache.cassandra.hadoop.AbstractColumnFamilyInputFormat.getSplits(AbstractColumnFamilyInputFormat.java:113)
at org.apache.spark.rdd.NewHadoopRDD.getPartitions(NewHadoopRDD.scala:90)
at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:204)
at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:202)
at scala.Option.getOrElse(Option.scala:120)
at org.apache.spark.rdd.RDD.partitions(RDD.scala:202)
at org.apache.spark.rdd.MappedRDD.getPartitions(MappedRDD.scala:28)
at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:204)
at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:202)
at scala.Option.getOrElse(Option.scala:120)
at org.apache.spark.rdd.RDD.partitions(RDD.scala:202)
at org.apache.spark.rdd.FlatMappedRDD.getPartitions(FlatMappedRDD.scala:30)
at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:204)
at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:202)
at scala.Option.getOrElse(Option.scala:120)
at org.apache.spark.rdd.RDD.partitions(RDD.scala:202)
at org.apache.spark.rdd.MappedRDD.getPartitions(MappedRDD.scala:28)
at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:204)
at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:202)
at scala.Option.getOrElse(Option.scala:120)
at org.apache.spark.rdd.RDD.partitions(RDD.scala:202)
at org.apache.spark.Partitioner$.defaultPartitioner(Partitioner.scala:59)
at org.apache.spark.rdd.PairRDDFunctions.reduceByKey(PairRDDFunctions.scala:370)
at org.apache.spark.examples.CassandraTest$.main(CassandraTest.scala:100)
at org.apache.spark.examples.CassandraTest.main(CassandraTest.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.spark.deploy.SparkSubmit$.launch(SparkSubmit.scala:292)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:55)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

我的配置:

  • spark-1.0.0-bin-hadoop2(二进制发行版,包含示例的源代码,但没有sbt或构建文件)。我没有对此文件夹中的任何文件进行任何更改。
  • 在一个单独的进程中运行cassandra 1.2.16(从我下载的unziped二进制包中使用sudo bin/cassandra start开始)。我也试过1.2.6和2.0.6。
  • OSX 10.9上的Oracle Java 7

我希望有人可以帮助我,这样我就可以解决这个错误并开始使用Spark和Cassandra。

1 个答案:

答案 0 :(得分:2)

你在这里有两个版本的hadoop。一个包含Spark的二进制发行版和一个嵌入在Cassandra中的包:org.apache.cassandra.hadoop...

您需要匹配两个版本才能拥有一个正常工作的系统。我不确定Cassandra支持哪个hadoop版本,但鉴于您的问题是spark-1.0.0-bin-hadoop2,我建议您尝试使用Hadoop v1的Spark发行版。