从javaPairRDD获取最高密钥

时间:2016-07-22 18:42:45

标签: java apache-spark key-value rdd

我有一个名为“rdd”的javaPairRDD,其元组定义为:

 <Integer,String[]> 

我想使用max()函数提取最高密钥但是它需要一个Comparator作为参数,你能给我一个例子来做这件事,拜托!!!

  

示例:

  rdd={(22,[ff,dd])(8,[hh,jj])(6,[rr,tt]).....} 

申请rdd.max(....)后,它可以给我:

 int max_key=22;
请帮助我...请在java中

2 个答案:

答案 0 :(得分:1)

你的方法不起作用,因为元组没有固有的顺序。

您尝试做的是获取最大的密钥。最简单的方法是提取密钥,然后像这样获得最大值

keyRdd = rdd.keys()
max_key = keyRdd.max()

注意:不是javaSpark用户,因此语法可能有些偏差。

答案 1 :(得分:0)

即使@ David的答案是如此逻辑它对我不起作用它总是需要比较器,当我使用比较器时它出现异常(不是可序列化的操作,所以我尝试使用Ordering但这次最大-key是1(实际上意味着min),所以最后,我使用了最简单的方法,然后我对pairRDD进行了后续排序,然后我提取了第一个()元组。

int max-key = rdd.first()._ 1;