2016-05-04 100 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'。我將這些導入添加到代碼片段中 –