错误:值cassandraFormat不是org.apache.spark.sql.DataFrameWriter的成员

时间:2017-05-23 00:32:33

标签: scala apache-spark apache-spark-sql spark-cassandra-connector

检查github上的回购我看到cassandraFormat here。我的import语句没有抛出异常:

import org.apache.spark.sql.cassandra._

df.write
    .cassandraFormat("keyspace", "table")
    .save()

<console>:34: error: value cassandraFormat is not a member of org.apache.spark.sql.DataFrameWriter[org.apache.spark.sql.Row]

cassandraFormatdf.write下不可用,但它位于spark.read下。

我正在使用Spark 2.1.1。我的spark-shell由以下内容调用:

spark-shell --master spark://10.0.0.115:7077 --packages com.databricks:spark-csv_2.11:1.5.0,datastax:spark-cassandra-connector:1.6.6-s_2.11

编辑:

我确实意识到cassandraFormat基本上是.format().options()的别名。但是返回了不同的错误:

df.write
      .format("org.apache.spark.sql.cassandra")
      .options(Map("table" -> "standard_feed", "keyspace" -> "testing"))
      .save()

java.lang.AbstractMethodError: org.apache.spark.sql.cassandra.DefaultSource.createRelation
    (Lorg/apache/spark/sql/SQLContext;Lorg/apache/spark/sql/SaveMode;Lscala/collection/
        immutable/Map;Lorg/apache/spark/sql/Dataset;)Lorg/apache/spark/sql/sources/
        BaseRelation;
at org.apache.spark.sql.execution.datasources.DataSource.write(DataSource.scala:518)
at org.apache.spark.sql.DataFrameWriter.save(DataFrameWriter.scala:215)

1 个答案:

答案 0 :(得分:3)

我对cassandraFormat不太确定,但将数据帧保存到cassandra表最容易通过以下方式完成:

df.write
  .format("org.apache.spark.sql.cassandra")
  .options(Map("table" -> "table_name", "keyspace" -> "keyspace_name"))
  .save()

关于您收到的错误消息:

我认为您收到的错误消息是由于版本不匹配造成的。您使用spark 2.1.1和cassandra-connector版本1.6.6。对于spark 2.1.x,您需要使用cassandra-connector的2.0版本,请参阅表here以获取版本兼容性的完整列表。