Apache spark 如何在spark rdd中获得最大值并将其删除?
有一个RDD对象:Apache spark 如何在spark rdd中获得最大值并将其删除?,apache-spark,Apache Spark,有一个RDD对象: //have some data in RDD[(Int, Int)] object (1, 2) (3, 2) (2, 3) (5, 4) (2, 7) (5, 2) (5, 7) 我想获得max key并将其删除,max key是5,因此我想要的结果是: //a new RDD object,RDD[(Int, Int)] (1, 2) (3, 2) (2, 3) (2, 7) 你能帮我吗?谢谢大家! 首先需要对结果进行排序,然后使用RDD.max()获得最高值,最后
//have some data in RDD[(Int, Int)] object
(1, 2)
(3, 2)
(2, 3)
(5, 4)
(2, 7)
(5, 2)
(5, 7)
我想获得max key并将其删除,max key是5,因此我想要的结果是:
//a new RDD object,RDD[(Int, Int)]
(1, 2)
(3, 2)
(2, 3)
(2, 7)
你能帮我吗?谢谢大家! 首先需要对结果进行排序,然后使用
RDD.max()
获得最高值,最后执行filter
过滤除最高键以外的键
或
您还可以将其注册为
DataFrame
,并执行简单的SQL查询以获得结果。在使用max
@MateuszDymczyk之前,您无需对RDD进行排序-感谢您的更正。您是对的,在使用max时,我们不需要任何排序。排序是在max
中隐式执行的。实际上,不需要在任何地方执行排序,因为它没有必要且速度较慢(在最佳情况下为nlogn)。您可以使用一个排序函数简单地减少整个RDD,该函数是linear@Sumit我可以在spark streaming中使用max()函数吗?max()
可与RDD API一起使用,因此在streaming中,您需要执行Dstream.foreachRDD
,然后对于每个RDD,您可以使用max
函数。