Cassandra与Spark的联系

时间:2018-03-08 21:38:02

标签: scala apache-spark cassandra spark-dataframe cassandra-3.0

我正在与Cassandra连接spark并且我在Cassandra中存储csv文件,当我输入此命令时出错。

 dfprev.write.format("org.apache.spark.sql.cassandra") .options(Map("keyspace"->"sensorkeyspace","table"->"sensortable")).save()

然后我收到了这个错误。

  

java.io.IOException:无法在{127.0.0.1}打开与Cassandra的本机连接:9042     at com.datastax.spark.connector.cql.CassandraConnector $ .com $ datastax $ spark $ connector $ cql $ CassandraConnector $$ createSession(CassandraConnector.scala:168)     在com.datastax.spark.connector.cql.CassandraConnector $$ anonfun $ 8.apply(CassandraConnector.scala:154)     在com.datastax.spark.connector.cql.CassandraConnector $$ anonfun $ 8.apply(CassandraConnector.scala:154)     at com.datastax.spark.connector.cql.RefCountedCache.createNewValueAndKeys(RefCountedCache.scala:32)     在com.datastax.spark.connector.cql.RefCountedCache.syncAcquire(RefCountedCache.scala:69)

3 个答案:

答案 0 :(得分:0)

你是Cassandra在localhost听吗?您可能需要通过在Spark配置中指定spark.cassandra.connection.host设置来配置Cassandra集群的IP地址列表。有关详细信息,请参阅documentation

答案 1 :(得分:0)

可能存在以下任何一种

  1. Cassandra服务器可能无法在127.0.0.1:9042

    运行

    请使用 netstat -an 命令检查cassandra是否在端口9042上收听。

  2. fat jar时可能存在依赖性问题。

    请确保您已在库依赖项中添加了正确版本的cassandra连接器,例如

    “com.datastax.spark”%%“spark-cassandra-connector”%“2.0.0-M3”

  3.   

    我正在运行此命令./spark-shell --packages   com.datastax.spark:spark-cassandra-connector_2.11:2.0.0-M3 --conf   spark.cassandra.connection.host = 127.0.0。

    要指定的包,

    spark-shell --packages“com.datastax.spark”:“spark-cassandra-connector_2.11”:“2.0.0-M3”

答案 2 :(得分:0)

检查这些内容,可能会解决您的问题, 1.在shell中输入以下命令,在系统中找到cqlsh.py文件

 whereis cqlsh 
  1. 编辑cqlsh.py并将DEFAULT PORT更改为您的IP

  2. 使用以下SparkConfig()启动Spark上下文

      val conf = new SparkConf().set("spark.cassandra.connection.host", "<YOUR IP>")
      val sc = new SparkContext(conf)