我遇到了一个问题。当我编写示例cassandra连接代码时,导入cassandra连接器会出错。
我正在启动脚本,如下面的代码(两者都给出了错误)
./spark-submit --jars spark-cassandra-connector_2.11-1.6.0-M1.jar /home/beyhan/sparkCassandra.py
./spark-submit --jars spark-cassandra-connector_2.10-1.6.0.jar /home/beyhan/sparkCassandra.py
但在
时给出以下错误import pyspark_cassandra
ImportError:没有名为pyspark_cassandra的模块
我做错了哪一部分?
注意:我已经安装了cassandra数据库。
答案 0 :(得分:1)
您正在混合使用DataStax的Spark Cassandra Connector(在您添加到spark提交的jar中)和TargetHolding的PySpark Cassandra项目(具有pyspark_cassandra
模块)。后者已弃用,因此您应该使用Spark Cassandra Connector。可以找到此程序包的文档here。
要使用它,您可以添加以下标志以引发提交:
--conf spark.cassandra.connection.host=127.0.0.1 \
--packages com.datastax.spark:spark-cassandra-connector_2.11:2.0.0-M3
当然使用Cassandra正在侦听的IP地址,并检查您需要使用的连接器版本:2.0.0-M3是最新版本,适用于Spark 2.0和大多数Cassandra版本。如果您使用的是其他版本的Spark,请参阅compatibility table。 2.10
或2.11
是您的Spark版本构建的Scala版本。如果您使用Spark 2,默认情况下它是2.11,在2.x之前它是版本2.10。
然后使用连接器的最好方法是使用它来读取数据帧,如下所示:
sqlContext.read\
.format("org.apache.spark.sql.cassandra")\
.options(table="kv", keyspace="test")\
.load().show()
有关详细信息,请参阅PySpark with DataFrames文档