如何使用sparkcassandraconnector连接spark和cassandra?

2024-05-28 23:30:20 发布

您现在位置:Python中文网/ 问答频道 /正文

你必须原谅我的愚蠢,但是我正在尝试建立一个spark集群,它连接到运行python脚本的cassandra,目前我正在使用datastaxenterprise在solr搜索模式下运行cassandra。我知道,为了使用datastax提供的spark-cassandra连接器,必须在分析模式下运行cassandra(使用-k选项)。目前,我只能使用dse spark版本来运行它,为此,为了使其工作,我遵循了以下步骤:

  1. 在分析模式下启动dse cassandra
  2. 将$PYTHONPATH环境变量更改为/path/to/spark/dse/python:/path/to/spark/dse/python/lib/py4j-*.zip:$PYTHONPATH
  3. 以root用户身份使用python test-script.py运行独立脚本

此外,我还单独使用spark(而不是dse版本)进行了另一个测试,试图包含使驱动程序类可访问的java包,我做到了:

  1. 添加spark.driver.extraClassPath=/path/to/spark cassandra连接器-快照.jar到文件火花-默认值.conf 2.执行$SPARK_HOME/bin/spark-submit —packages com.datastax.spark:spark-cassandra...

我还尝试运行pyspark shell并测试sc是否具有cassandraTable方法,以查看驱动程序是否已加载但没有运行,在这两种情况下,我都得到以下错误消息:

AttributeError: 'SparkContext' object has no attribute 'cassandraTable'

我的目标是不明白我必须做什么,使非dse的spark版本与cassandra连接,并有来自驱动程序的方法可用。在

我还想知道是否可以将dse spark cassandra连接器与未与dse一起运行的cassandra节点一起使用。在

谢谢你的帮助


Tags: topath方法版本脚本驱动程序模式集群
2条回答

我在一个独立的python脚本中使用了pyspark。我不使用DSE,我从datatax的github存储库克隆了cassandraspark connector,并用datataxinstrucctions编译。在

为了访问spark中的spark连接器,我复制到spark安装中的jars文件夹。在

我认为这对你也有好处:

 cp ~/spark-cassandra-connector/spark-cassandra-connector/target/full/scala-2.11/spark-cassandra-connector-assembly-2.0.5-86-ge36c048.jar $SPARK_HOME/jars/

您可以访问this,在那里我解释我自己设置环境的经验。在

一旦spark可以访问Cassandra连接器,就可以使用pyspark库作为包装:

^{pr2}$

在这个example中,您可以看到整个脚本。在

下面是如何将spark shell连接到非dse版本中的cassandra。在

spark-cassandra-connectorjar复制到spark/spark-hadoop-directory/jars/

spark-shell  jars ~/spark/spark-hadoop-directory/jars/spark-cassandra-connector-*.jar

在sparkshell中执行以下命令

^{pr2}$

如果您的cassandra有密码设置等,则必须提供更多参数:)

相关问题 更多 >

    热门问题