2015-04-21 9 views
7

Próbuję zapisać zestaw danych w bazie Cassandra użyciu zapłonową Scala, ale otrzymuję wyjątek podczas uruchamiania kodu: odnośnik używany: http://rustyrazorblade.com/2015/01/introduction-to-spark-cassandra/saveTocassandra nie mógł znaleźć ukrytą wartość parametru 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" 

jeśli zmienisz wersję złącza scala i cassandra na 2.10, 1.1.0 to działa. ale muszę użytkowania 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 ........... Po prostu wow ... to pytanie wygląda jak zwycięski kandydat na "Najbardziej nierozstrzygalne pytanie na SO" [Zapytaj] –

+0

@nass: link, który masz udostępniony daje 403. – LittlePanda

+0

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

Odpowiedz

1

Ma do czynienia z "datastax zapłonie Cassandra-złącze" wersji, a nie wersji Scala.

Do tej pory wersja 1.2.x brakujące zapisywanie z klasy niestandardowej.

Try "datastax zapłonie Cassandra-złącze" wersja 1.1.1 z Scala 2.11 i powinno działać

Uwaga: Upewnij się, że masz Spark skompilowany przeciwko Scala 2.11 też.

15

Przenoszenie case class FoodToUserIndex(food: String, user: String) poza główna funkcja powinna rozwiązać problem.

+1

to rozwiązuje mój problem ... to powinna być zaakceptowana odpowiedź .. :) – daxsorbito

+0

Nice. Prawdopodobnie zaoszczędziłeś mi 11 godzin: D – raam86

+0

@artex Dlaczego tak jest? – taylorcressy

Powiązane problemy