使用map / filter在Pyspark中查找RDD中的最大元素

时间:2018-03-28 15:42:25

标签: apache-spark pyspark rdd

a = sc.parallelize((1,9,3,10))

我想在不使用任何max函数的情况下找到a中的最大元素。

我试过了     a.filter(lambda x,y:x if x> y else y)

我无法比较RDD中的元素。如何在map / filter函数中正确使用for循环或if else条件。有可能吗?

谢谢。

我试图发布一个不同的问题。但不能。

a = sc.parallelize((11,7,20,10,1,7))

我想在不使用sort()函数的情况下按递增顺序对元素进行排序。

我试过了:

def srt(a,b):
if a>b:
    i=a
    a=b
    b=i   

final=a.map(lambda x,y: srt(x,y))

我没有得到所需的结果。

我想要

  (1,7,7,10,11,20)
谢谢。

1 个答案:

答案 0 :(得分:1)

使用过滤器无法找到最大/最小值。您可以在reduce操作中使用比较来实现这一点:

a = sc.parallelize([1,9,3,10])
max_val = a.reduce(lambda a, b: a if a > b else b)

lambda只比较并返回2个值中较大的值。