2016-07-28 19 views
0

我有元組,其是這樣的獲取多個元組

([1,2,4],3,userdn1) ([1,6,7],1,userdn1) ([1,2 ,7],2,userdn1)

我正在使用RDD獲取最大計數的元組,這是第一個元組,但可能有多個元組可能具有相同的計數,我怎樣才能得到多個具有相同最大值的元組?現在最大的方法只返回一個單元組

+0

可以進行排序,取前n個元素,然後扔掉較小值。 – Dikei

+0

我怎麼知道要採取多少元素? – allthenutsandbolts

+2

如果您不知道需要多少個,則取第一個,然後過濾具有相同值的物品的RDD。 – Dikei

回答

0

你想獲得這樣的結果嗎?

//just try to initial some similar records 
val rdd = sc.parallelize[(Array[Int],Int, String)](Array[(Array[Int],Int, String)]((Array(1,4), 3, "dn1"),(Array(1,2,4), 3, "dn1"),(Array(1,6,7), 1, "dn1"),(Array(1,2,7), 2, "dn1"))) 
//here max records you wanna 
val max = rdd.map(t => t._1.length).max 
val rddmax = rdd.filter(t => t._1.length == max) 

這裏是結果:

rddmax.collect 
res1: Array[(Array[Int], Int, String)] = Array((Array(1, 2, 4),3,dn1), (Array(1, 6, 7),1,dn1), (Array(1, 2, 7),2,dn1))