2015-04-21 11 views
7

Sto cercando di salvare un set di dati nel database Cassandra utilizzando scintilla Scala, ma io sono sempre un'eccezione durante l'esecuzione di un codice: link utilizzato: http://rustyrazorblade.com/2015/01/introduction-to-spark-cassandra/saveTocassandra non riusciva a trovare valore implicito per il parametro RWF

error: 

could not find implicit value for parameter rwf: com.datastax.spark.connector.writer.RowWriterFctory[FoodToUserIndex] 
food_index.saveToCassandra("tutorial", "food_to_user_index") 
         ^

.scala

def main(args: Array[String]): Unit = { 

val conf = new SparkConf(true) 
    .set("spark.cassandra.connection.host", "localhost") 
    .set("spark.executor.memory", "1g") 
    .set("spark.cassandra.connection.native.port", "9042") 
val sc = new SparkContext(conf) 


case class FoodToUserIndex(food: String, user: String) 

val user_table = sc.cassandraTable[CassandraRow]("tutorial", "user").select("favorite_food","name") 

val food_index = user_table.map(r => new FoodToUserIndex(r.getString("favorite_food"), r.getString("name"))) 
food_index.saveToCassandra("tutorial", "food_to_user_index")} 

build.sbt

name := "intro_to_spark" 

version := "1.0" 

scalaVersion := "2.11.2" 

libraryDependencies += "org.apache.spark" %% "spark-core" % "1.2.0" 

libraryDependencies += "com.datastax.spark" %% "spark-cassandra-connector" % "1.2.0-rc3" 

se cambia la versione di scala e il connettore cassandra a 2.10, 1.1.0 funziona. ma ho bisogno di uso Scala 2.11:

scalaVersion := "2.10.4" 

libraryDependencies += "org.apache.spark" %% "spark-core" % "1.2.0" 

libraryDependencies += "com.datastax.spark" %% "spark-cassandra-connector" % "1.1.0" withSources() withJavadoc() 
+1

Wow ........... Solo wow ....... questa domanda sembra il candidato vincente per "La domanda più senza risposta su SO" [Chiedi] –

+0

@nass: Il link che hai condiviso dà un 403. – LittlePanda

+0

@LittlePanda http://rustyrazorblade.com/2015/01/introduction-to-spark-cassandra/ – nass

risposta

1

Ha a che fare con la versione Scala versione "datastax scintilla cassandra-connettore" e non.

Finora, versione 1.2.x manca il salvataggio dalla classe personalizzata.

Prova "datastax scintilla cassandra-connettore" versione 1.1.1 con la Scala 2.11 e dovrebbe funzionare

Nota: Assicurarsi di avere Spark compilato contro Scala 2.11 troppo.

15

Lo spostamento case class FoodToUserIndex(food: String, user: String) all'esterno principale della funzione dovrebbe risolvere il problema.

+1

questo risolve il mio problema ... questa dovrebbe essere la risposta accettata .. :) – daxsorbito

+0

Nice. Probabilmente mi hai salvato 11 ore: D – raam86

+0

@artex Allora, perché è così? – taylorcressy

Problemi correlati