2016-08-31 3 views
0

Ich bin ein Anfänger mit Scala und Apache Spark und ich bin mit dem unten stehenden Problem konfrontiert.Spark SQL zum Einfügen von Daten in Cassandra

Ich versuche, Daten in eine Kassandra-Tabelle einzufügen ..user (Name, favorite_food) mit Funken SQL.

Das Code-Snippet sieht wie folgt aus

val conf = new SparkConf(true) 
    .set("spark.cassandra.connection.host", "127.0.0.1") 

val sc = new SparkContext("local", "test", conf) 
val sqlC = new CassandraSQLContext(sc) 
sqlC.setKeyspace("myKeySpace") 
sqlC.sql("INSERT into user (name,favorite_food) values ('John Doe','brownies')") 

Jedoch habe ich das Problem Exception in thread "main" java.lang.RuntimeException Gesicht: [1.13] failure: `` Tabelle '' erwartet, aber Kennung Benutzer gefunden

ich bin eine lokale Instanz von Cassandra DB laufen

Mein Maven POM wie

<dependencies> 
     <dependency> 
      <groupId>org.apache.spark</groupId> 
      <artifactId>spark-core_2.10</artifactId> 
      <version>1.6.0</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.spark</groupId> 
      <artifactId>spark-sql_2.10</artifactId> 
      <version>1.6.2</version> 
     </dependency> 
</dependencies> 
sieht

Meine Frage ist; Bitte lassen Sie mich wissen, warum ich den unten stehenden Fehler habe (Die insert-Anweisung funktioniert einwandfrei in der Cassandra-Shell) Ausnahme im Thread "main" java.lang.RuntimeException: [1.13] Fehler: `` table '' erwartet aber Identifier Benutzer gefunden

PS: Ich weiß, ich kann den Spark-Connector von Datastax verwenden, um Daten in Cassandra zu speichern, aber ich möchte Spark SQL verwenden ... ist das möglich?

+0

Ich wette 'user' ist ein reserviertes Wort, wenn Sie es zitieren' "user" 'es Mai – RussS

Antwort

1

Wir können keine Daten in Tabelle mit Cassandra Context einfügen. Spark bietet diese Option nicht an.

Sie werden es versuchen, dies es wird auf jeden Fall funktioniert,

import org.apache.spark.SparkContext 
import org.apache.spark.SparkConf 
import com.datastax.spark.connector._ 
import com.datastax.spark.connector.UDTValue 

//we need define a class 
//case class name(column name: datatype,column name: datatype) 

case class model(name: String, favorite_food: String) 

// define sequence to insert a data 
// val coll = sc.parallelize(Seq(classname(data, data), model(data, data))) 

val collection = sc.parallelize(Seq(model("John Doe", "brownies"))) 

//then save to cassandra 
//collection.saveToCassandra("keyspace_name", "table_name", SomeColumns("col name", "col name")) 

collection.saveToCassandra("myKeySpace", "user", SomeColumns("name", "favorite_food")) 

Danke, Aravinth

+0

In dem oben genannten Beispiel erwähnt als Modell ("John Doe", "Brownies") Also was soll ich tun, wenn ich eine Liste von Werten habe und dynamisch Modell statt Hardcoding wie "John Doe", "Brownies" erstellen und in Cassandra speichern –

Verwandte Themen