Pyspark - 最大/最小参数

时间:2016-12-31 04:10:02

标签: apache-spark pyspark

我有一个查询。在Pyspark中,当我们需要根据(Key,Value)得到总数(SUM)时,我们的查询如下:

RDD1 = RDD.reduceByKey(lambda x , y: x + y)

当我们需要为(Key,Value)找到MAX / MIN值时,我们的查询读起来像

RDD1 = RDD.reduceByKey(lambda x , y: x if x[1] >= y[1] else y)

为什么当我们汇总数据时不使用x[1]Y[1],其中MAX / MIN用于哪一个?请澄清疑问。

RGD的

1 个答案:

答案 0 :(得分:1)

你错了,你已经脱离了这个代码。在这两种情况下,xy都会引用值。

lambda x , y: x if x[1] >= y[1] else y

相当于:

lambda x, y: max(x, y, key=lambda x: x[1])

它按第二个元素比较值,表示每个

  • 可索引(实现__getitem__)。
  • 至少有两个元素。

示例

sc.parallelize([(1, ("a", -3)), (1, ("b", 3))]) \
  .reduceByKey(lambda x , y: x if x[1] >= y[1] else y).first()

将为(1, ('b', 3)),因为3大于-3。