2017-03-02 10 views
0

タプルをキーとして使用してRDDの最大値を見つける必要がありました。 元RDDを次のように定義される。このよう testRDD:私はタプル(1,3)に基づいて、第2のカラムの最大値を見つけるために必要なRDD他のRDDにフィルタとしてセットを使用する方法

TestRDD(3,249345,038.9,1) 
TestRDD(3,249345,785.59,2) 
TestRDD(3,249345,584.9,3) 
TestRDD(3,249345,427.5,4) 
TestRDD(3,249345,410.71,5) 

Iは、以下の操作を行って、それをacheiveすることができました:

val agg_rdd = TestRDD.map(d => ((d.col1,d.col3),(d.col2))).groupByKey() 
val max_AggRDD = agg_rdd.map{case ((col1,col3),(col2)) => (col1,col3) -> col2.max} 
val ids_maxAggRDD = max_AggRDD.collect.toSet 

は、今は元のtestRDDにフィルタとしてscala.collection.immutable.Set [((文字列、文字列)、ロング)]として定義されるID ids_maxAggRDDの出力を使用する必要があります。

私はこれを行うために値を使用することができないようです。

val Max_RDD = TestRDD.filter(v => ids_maxAggRDD.value.contains(v.col1,v.col3,v.col2))) 
  1. 私が何か
  2. に最大IDのセットを変換する必要があり、私が達成したいものを達成するためのより良い方法はありますか?
+0

あなたはScala 'Set'に' .value'を持っていません。あなたは 'ids_maxAggRDD.value'の結果として何を得たいですか?そして、あなたは 'Max_RDD'を計算するためにどの論理を使用したいですか? – semsorock

答えて

0

.valueを含まないcontainsを使うだけで動作させることができました。これが最善のアプローチであるかどうかわからない

関連する問題