2015-09-25 116 views
-2
((Cool,Yes),3) 
((Cool,No),1) 
((Mild,Yes),4) 
((Mild,No),2) 

我有這樣的RDD。我想提取RDD作爲一個輸出,並將與yes或no關聯的編號作爲另一個輸出。 例如輸出1: ((Cool,Yes),3) ((Mild,Yes),4) 輸出2: 3代表((Cool,Yes),3)使用Spark匹配Scala中的RDD值

任何人都可以告訴我如何在Scala中做到這一點?

我曾嘗試:

def check(s : Array[((String, String), Int)]) : Boolean = 
    if (prob2.equals("Yes")) true else false 

val res = inFile.map{ x => check(prob2) } 
+0

'DEF檢查(S:數組[((字符串,字符串),智力)]):布爾=如果(prob2.equals( 「是」))真假其他 \t VAL解析度= infile的。 map {x => check(prob2)}'這個我已經試過了 這個。 Prob2是我得到的((Cool,Yes),3) ((Cool,No),1) ((輕度,是),4) ((輕度,否),2) – Aditi

+0

請編輯您的文章並在其中添加您的附加代碼,而不是在評論中。 –

+2

在StackOverflow問題中,看起來像天氣測量的RDD很常見,所以我懷疑這是某個課程的作業。您是否在此主題上搜索了Stackoverflow的其他問題/答案? –

回答

2

仍然有猜測了一下,你想要什麼,但假設輸出1是你的意思......

與列表,但RDD的工作原理相同:

val data = List((("Cool","Yes"),3), 
       (("Cool","No"),1), 
       (("Mild","Yes"),4), 
       (("Mild","No"),2)) 

def check(row: ((String, String), Int), value:String) = row._1._2 == value 

data.filter(check(_,"Yes")) 
// List(((Cool,Yes),3), ((Mild,Yes),4)) 
data.filter(check(_,"No"))  
// List(((Cool,No),1), ((Mild,No),2)) 
+0

這就是我所期待的。讓我嘗試 – Aditi

相關問題