0
私はSparkを初めて使用しています。私は、IDE(Eclipseのネオン)は、次のメッセージ私はこの問題を解決するにはどうすればよい Spark Java - なぜTuple2はマップの関数の引数になりませんか?
Multiple markers at this line
- The method map(Function<Tuple2<Detection,Detection>,R>) in the type
AbstractJavaRDDLike<Tuple2<Detection,Detection>,JavaPairRDD<Detection,Detection>> is not applicable for the arguments (new
Function<Tuple2<Detection,Detection>,Segment>(){})
- The type new Function<Tuple2<Detection,Detection>,Segment>(){} must implement the inherited abstract method
Function<Tuple2<Detection,Detection>,Segment>.apply(Tuple2<Detection,Detection>)
を示し、次のJavaコード
JavaPairRDD<Detection, Detection> allCombinations = currentLevelNodes.cartesian(nextLevelNodes);
allCombinations.map(new Function<Tuple2<Detection, Detection>, Segment>(){
public Segment call(Tuple2<Detection, Detection> combination){
Segment segment = new Segment();
Detection a = combination._1();
Detection b = combination._2();
segment.distance = Math.sqrt(Math.pow((a.x)-(b.x), 2) + Math.pow((a.y)-(b.y), 2));
return segment;
}
});
を書かれていますか?
エラーはあなたがcall()を実装していると言いますが、代わりにapply()を実装する必要があります。ラムダを使うとあなたの人生が楽になります – Jack
また、マッピング関数の引数としてJavaPairRDDの代わりにTuple2を使うことはできますか? – Jack
関数名 "call"を "apply"に変更しようとしましたが、それでも最初の行メッセージが表示されます。 – lucienlo