2017-04-17 6 views
0

一部スパーク)、ラムダJavaの持つ式と(.filterで

JavaPairRDD<Integer, ?> vals = sc 
      .parallelize(Arrays.asList(10, 15, 0)) 
      .zipWithIndex(); 
JavaPairRDD<Integer, ?> valsGreaterThan5 = vals 
      .filter((k, v) -> v > 5) 
      .map((k, v) -> k); 

ラムダ式の署名が機能インタフェースのメソッド呼び出しの署名と一致していない私を与えます(Tuple2)

エラーです。私はそれを理解していない。私は自分のタイプでTuple2を使っていません。エラーの原因は何ですか?どのように修正できますか?

答えて

0

mapまたはfilterは、タイプTuple2の引数を1つだけ取得します。このように再構成することはできません。次のことができます。

JavaPairRDD<Integer, ?> valsGreaterThan5 = vals 
     .filter(kv -> v._2 > 5) 
     .map(kv -> k._1); 

以上:

JavaPairRDD<Integer, ?> valsGreaterThan5 = vals 
     .filter(kv -> v._2 > 5) 
     .keys(); 
+1

あなたはこの構文が正しいことを確認していますか? – SpiderRico