2016-07-22 156 views
-2

執行連接後我獲得了下面的數據,我需要從鍵值對的值部分中提取幾個字段。請幫助我如何參考價值部分,然後在其中的領域。Scala - 從鍵值對的值部分中提取字段

res0: Array[(String, (String, Int))] = Array((48180,(48180,2012-12-01 20:24:34.0,2014-01-18 21:11:03.0,David,Baird,4429 Hazelwood Avenue,Santa Ana,CA,92719,6579627835,2014-03-18 13:31:18.0,2014-03-18 13:31:18.0,2)), 
(23136,(23136,2011-05-13 04:15:05.0,2012-12-28 02:52:19.0,Shirley,Ayers,792 Parkway Street,Pendleton,OR,97877,5412977058,2014-03-18 13:30:29.0,2014-03-18 13:30:29.0,2))) 

預期輸出:來自值部分的第一個,最後一個,第四個和第五個字段。

48180 2 David Baird 
23136 2 Shirley Ayers 

回答

1

這種情況下,你可以解決這樣的:

rdd.map { case (k, v) => (k, v._13, v._4, v._5) } 

但是,根據我看到你有一個更大的問題是什麼,你的價值是不是13位的元組,在兩個位置的元組。第一個是字符串,第二個是整數。如果這是真實的情況,你可以這樣做:

rdd.map { case (k, v) => (k, v._2, v._1.split(',')(3), v._1.split(',')(3)) } 
+0

它的工作,非常感謝你Thiago! – Sam