2

我在做什么:错误而连接火花和卡桑德拉

  • 试图连接Spark和卡桑德拉检索存储在从火花卡桑德拉表中的数据。

哪些步骤有我跟着:

  • 下载卡桑德拉2.1.12火花1.4.1
  • 内置火花与sudo build/mvn -Pyarn -Phadoop-2.4 -Dhadoop.version=2.4.0 -DskipTests clean packagsbt/sbt clean assembly
  • 存储一些数据到cassandra。
  • 下载这些罐子到spark/lib

cassandra-driver-core2.1.1.jarspark-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:

AFTE R运行从./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和​​和--jars选项通过添加2罐运行。
  • 试图将scala降级到2.1,并尝试与scala shell但仍然是相同的错误。

问题我一直在思考关于我们 -

  1. 是我使用的是相互兼容的卡珊德拉,火花和Scala的版本?
  2. 我使用的jar文件的版本是否正确?
  3. 难道我编译火花在错误的道路?
  4. 我缺少的东西,或做错了什么?

我真的很新,火花和卡桑德拉,所以我真的需要一些建议!花了几个小时,这可能是件小事。

+0

我的工作火花依赖设置看起来像这样,尝试它并让我知道它是否工作: spark-cassandra-connector_2.10:1.3.0 -M2 spark-cassandra-connector-java_2.10:1.3.0 -M2 spark-core_2.10:1.3.0 spark-streaming_2.10:1.3.0 作为一个cassandra连接器,我使用spring-data – Damiano

+0

@Damiano你有和我一样的cassandra,spark和scala版本?我正在运行Python 2.7.6。 – HackCode

+1

连接器1.4与Cassandra 2.1.5+兼容(请参阅[版本兼容性](https://github.com/datastax/spark-cassandra-connector#version-compatibility))。 – zero323

回答

4

的几个注意事项

一个你正在建设火花2.10和使用星火卡桑德拉连接器库2.11。要建立火花2.11你需要使用-Dscala-2.11标志。这很可能是你错误的主要原因。

下一页实际上包括连接器在您的项目只是包括但依赖核心库是不够的。如果你通过了第一个错误,你很可能会看到其他班级没有发现失踪的错误。

这就是为什么我们建议使用星火包装网站和--packages标志。这将包括一个具有所有必需依赖项的“fat-jar”。见 http://spark-packages.org/package/datastax/spark-cassandra-connector

火花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方法罐子。

不要使用spark.driver.extraClassPath,它只会向驱动程序添加依赖项,远程代码将无法使用依赖项。

+0

正是我想要的! – HackCode

+0

只有一个问题,我从cassandra得到结果,但在得到结果之前以及提交查询之后,我得到了类似于'java.lang.UnsatisfiedLinkError:/tmp/libnetty-transport-native-epoll6452785661344203257.so: /tmp/libnetty-transport-native-epoll6452785661344203257.so:错误的ELF类:ELFCLASS64(可能的原因:架构字宽不匹配) '。这个错误是什么意思? – HackCode

+0

仍然没有与spark 1.6兼容的连接器吗? – HackCode

相关问题