2016-12-31 6 views
0

私はクエリを持っています。 Pysparkで我々は(キー、値)に基づいて(SUM)の合計を取得する必要があるときに、私たちのクエリは次のように読み取りますPyspark - 最大/最小パラメータ

我々は(キー、値)のためのMAX/MIN値を見つける必要があるよう
RDD1 = RDD.reduceByKey(lambda x , y: x + y) 

たちのクエリ

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

なぜ和データが同じでMAX/MINのために使用されx[1]Y[1]を、使用しないように読み込み、?。疑いを明確にしてください。

Rgd's

答えて

0

あなたは間違っており、このコードを文脈から外しました。どちらの場合も、xyは値を参照してください。

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

と等価である:

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

それは彼らの第二の要素によって値を比較し、各ことを意味する:

  • は割り出し可能(実装__getitem__)です。
  • 少なくとも2つの要素があります。

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

3 -3よりも大きいため(1, ('b', 3))あろう。