2016-05-04 6 views
0

: Ich bin in Funken, scala etc unter mein CodeManipulation auf Spark-Dataframe Reihe

val eventdf = sqlContext.sql("SELECT sensor, data.actor FROM eventTable") 

eventdf.map { 
    case (r) => (r.getString(0) + count, r.getString(1), count) 
}.saveToCassandra("caliper", "event", SomeColumns("sensor", "sendtime", "count")) 

Hier wollte ich mit r.getString(1) eine Manipulation durchzuführen und dann zu cassandra Pass zum Speichern.

+1

auf der Manipulation Je, können Sie es direkt in den Datenrahmen, wie 'eventdf.withColumn tun (“ newColumn ", col (" Sensor ") + Anzahl)'. Können Sie Einzelheiten zu der Art von Manipulation angeben, die Sie durchführen möchten? –

Antwort

0

Wenn Sie die Transformation direkt auf die Datenrahmen Spalte nicht anwenden kann, kann ich folgendes vorschlagen:

import org.apache.spark.sql.Row 
import sqlContext.implicits._ 

val newRDD = eventdf.map { 
    case Row(val1: String, val2: String) => 
    // process val2 here and save the result to val2_processed 
    (val1 + count, val2_processed, count) 
} 

val newDF = newRDD.toDF("col1", "col2", "col3") // If you need to convert it back to DF 

newDF.saveToCassandra(...) 
+0

hi @Daniel de Paula, @ AlbertoBonsanto danke für obige Antwort, aber vor Kompilierung Problem: nicht gefunden: Wert Row, d. H. Fall Row() –

+0

Row von welcher Art? import org.apache.spark.sql.Row Oder import com.datastax.driver.core.Row –

+0

@SwapnilShirke Es ist 'org.apache.spark.sql.Row'. Ich habe die Importe zum Code-Snippet hinzugefügt –