2016-05-04 64 views
0

我是火花,斯卡拉等 新下面是我的代码操纵的星火据帧行

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")) 

在这里,我想与r.getString(1)执行一些操作,然后传递给卡桑德拉保存。

+1

根据不同的操作,你可以直接在数据帧,如'eventdf.withColumn(做” newColumn“,col(”sensor“)+ count)'。你能提供一些你想要执行的操作的细节吗? –

回答

0

如果你不能直接应用于改造数据框列,我可以建议如下:

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感谢上面的回答,但是面临编译问题:not found:value Row即case Row() –

+0

行是哪一种? import org.apache.spark.sql.Row或import com.datastax.driver.core.Row –

+0

@SwapnilShirke它是'org.apache.spark.sql.Row'。我将这些导入添加到代码片段中 –