2015-09-15 30 views
5

Dosyadaki her kayda dosya adı eklemeye çalışıyorum. RDD'nin Dizilim olup olmadığını düşündüm, benim için bunu yapmak kolay olurdu.RDD [(String, String)], RDD [Array [String]] içine nasıl dönüştürülür?

RDD türünü dönüştürmede veya bu problemi çözmede yardımcı olan bazı yardımlar çok takdir edilecektir!

yılında (String, String) Array olarak

scala> myRDD.first()(1)  
scala><console>:24: error: (String, String) does not take parametersmyRDD.first()(1) 

yazın (string)

scala> myRDD.first()(1)  
scala> res1: String = abcdefgh 

Benim işlevi: Eğer bir RDD[(String, String)] varsa

def appendKeyToValue(x: Array[Array[String]){ 
    for (i<-0 to (x.length - 1)) { 
     var key = x(i)(0) 
     val pattern = new Regex("\\.") 
     val key2 = pattern replaceAllIn(key1,"|") 
     var tempvalue = x(i)(1) 
     val finalval = tempvalue.split("\n") 
     for (ab <-0 to (finalval.length -1)){ 
      val result = (I am trying to append filename to each record in the filekey2+"|"+finalval(ab)) 
      } 
     } 
} 

cevap

8

, erişebileceğiniz

012 numaralı tüfeğin ilk tuple alanı
val firstTupleField: String = myRDD.first()._1 

Bir RDD[Array[String]] içine RDD[(String, String)] dönüştürmek istiyorsanız Ayrıca kısmi fonksiyonu kullanabilir

val arrayRDD: RDD[Array[String]] = myRDD.map(x => Array(x._1, x._2)) 

aşağıdaki dizilerini destructure için yapabileceğiniz:

val arrayRDD: RDD[Array[String]] = myRDD.map { case (a,b) => Array(a, b) } 
+0

Her iki cevap için bir çözüm sağlar benim sorgum. Şerefe! – WoodChopper

+0

Yardım edebileceğime sevindim :-) –

İlgili konular