2017-03-18 14 views
0

私は(city, person_id, number)とRDDを持っています。そして、各都市について、最も高い番号の人を探したいと思います。私の最初の考えは、cityをキーとしてreduceByKeyを、値として数値(rdd.reduce((num1, num2) => Math.max(num1, num2)))を使用することでしたが、person_idをどのように保持するかはわかりません。spark(Scala)を減らすときに列を保存する

答えて

0

あなたは、あなたがreduceByKeyと最大数

rdd.map { case (city, person_id, number) => (city, (person_id, number)) }. 
     reduceByKey { 
     case ((person_id1, n1), (person_id2, n2)) => 
      if (n1 > n2) 
      (person_id1, n1) 
      else 
      (person_id2, n2) 
     }.map { 
     case (city, (person_id, number)) => (city, person_id) 
    } 
で人を保つことができ、PairRddにごRDDを変換する必要があります
関連する問題