Pyspark 和 Cassandra 连接错误

Posted

技术标签:

【中文标题】Pyspark 和 Cassandra 连接错误【英文标题】:Pyspark and Cassandra Connection Error 【发布时间】:2016-12-15 11:01:44 【问题描述】:

我遇到了一个问题。当我在导入 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数据库。

【问题讨论】:

你从哪里得到的导入语句?您是否阅读过 Cassandra 连接器的文档:github.com/datastax/spark-cassandra-connector#documentation?任何地方都没有提到该 import 语句,因为确实没有具有该名称的模块。 【参考方案1】:

您正在混淆 DataStax 的 Spark Cassandra 连接器(在您添加到 spark 提交的 jar 中)和 TargetHolding 的 PySpark Cassandra 项目(具有 pyspark_cassandra 模块)。后者已被弃用,因此您可能应该使用 Spark Cassandra 连接器。这个包的文档可以在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.102.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 文档

【讨论】:

以上是关于Pyspark 和 Cassandra 连接错误的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PySpark、SparkSQL 和 Cassandra?

升级 cassandra 的最佳实践

从本地连接到客户端 cassandra

Cassandra datastax 给出错误“所有主机尝试查询失败”

Cassandra / Spark显示大表的错误条目数

无法使用Pyspark从EMR群集连接到Snowflake