2015-04-30 22 views
5

MANY sütunlu bir RDD sahibim (ör. yüzlerce), bu RDD'nin sonuna nasıl bir sütun daha eklerim?Spark RDD'ye yeni sütun nasıl eklenir?

Örneğin benim RDD aşağıda gibi olur:

123, 523, 534, ..., 893 
    536, 98, 1623, ..., 98472 
    537, 89, 83640, ..., 9265 
    7297, 98364, 9, ..., 735 
    ...... 
    29, 94, 956, ..., 758 

nasıl değer sütunları, ikinci ve üçüncü toplamıdır buna bir sütun ekleyebilirsiniz ?

Çok teşekkür ederim.

+0

Not:

Bu örneğin, orijinal içeriklerini artı eklemek istediğiniz öğeleri alarak, her satır eşleyerek yapılabilir. Birini değiştiremezsin, ama eski birinden yeni bir tane yapabilirsin ... bkz. Http://stackoverflow.com/questions/29109916/updating-a-dataframe-column-in-spark – Paul

cevap

3

Eğer tuple 4 RDD var, Sen Tuple * Hiç bir RDD yeni bir sütun eklemek için nesneleri kullanmak gerekmez harita uygulamak ve onu

val rddTuple4RDD = ........... 
val rddTuple5RDD = rddTuple4RDD.map(r=> Tuple5(rddTuple4._1, rddTuple4._2, rddTuple4._3, rddTuple4._4, rddTuple4._2 + rddTuple4._3)) 
+3

Teşekkürler sb '. Bir problem, gerçek verilerimde, birçok sütun (örneğin, yüzlerce) vardır, tüm sütunların değerlerini saymak kolay değildir. Birçok sütun işlemek için bir yolu var mı? – Carter

5

tuple5 dönüştürmek. dataframes değişmez olduğu

val rdd = ... 
val withAppendedColumnsRdd = rdd.map(row => { 
    val originalColumns = row.toSeq.toList 
    val secondColValue = originalColumns(1).asInstanceOf[Int] 
    val thirdColValue = originalColumns(2).asInstanceOf[Int] 
    val newColumnValue = secondColValue + thirdColValue 
    Row.fromSeq(originalColumns :+ newColumnValue) 
    // Row.fromSeq(originalColumns ++ List(newColumnValue1, newColumnValue2, ...)) // or add several new columns 
}) 
İlgili konular