2016-08-02 16 views
1

最初にexampleを実行しようとしていました。SparkのJava FlatMapFunction:エラー:抽象メソッドではなく、FlatMapFunctionの抽象メソッド呼び出し(String)をオーバーライドしません。

ソースコードは次のとおりです。私はMVNをコンパイルパッケージを使用してコンパイルすると、次のエラーが現れて

/*keyWordCount.java */ 
      import org.apache.spark.*; 
      import org.apache.spark.api.java.*; 
      import org.apache.spark.api.java.function.*; 
      import org.apache.spark.rdd.*; 
      import org.apache.spark.api.java.JavaRDD; 
      import java.util.*; 

      public class keyWordCount { 

       public static void main(String[] args) { 
        SparkConf conf = new SparkConf().setAppName("keyWordCount"); 
        JavaSparkContext sc = new JavaSparkContext(conf); 
        JavaRDD<String> textFile = sc.textFile("output"); 
        JavaRDD<String> dictFile = sc.textFile("keyword"); 
        JavaRDD<String> words = textFile.flatMap(new FlatMapFunction<String, String>() { 
         @Override public Iterable<String> call(String s) { return Arrays.asList(s.split(" ")); } 
        }); 
       } 
      } 

保つ:

[ERROR] COMPILATION ERROR : [INFO] ------------------------------------------------------------- [ERROR] /home/cyberliem/TestSpark/src/main/java/keyWordCount.java:[16,81] error: is not abstract and does not override abstract method call(String) in FlatMapFunction

[ERROR] /home/cyberliem/TestSpark/src/main/java/keyWordCount.java:[17,39] error: call(String) in cannot implement call(T) in FlatMapFunction

[ERROR] T extends Object declared in interface FlatMapFunction R extends Object declared in interface FlatMapFunction /home/cyberliem/TestSpark/src/main/java/keyWordCount.java:[17,5] error: method does not override or implement a method from a supertype

私はこの問題を解決する方法がわからないんだけど、することができます誰それが間違っている理由を私に理想を与える?

+0

@Overrideを削除してみてください –

答えて

3

することは、この方法を試してください。

JavaRDD<String> words = textFile.flatMap(new FlatMapFunction<String, String>() { 
    @Override public Iterator<String> call(String s) { return Arrays.asList(s.split(" ")).iterator(); } 
}); 

あるいはラムダを使用して単純:

JavaRDD<String> words = textFile.flatMap(l -> Arrays.asList(l.split(" ")).iterator()); 
+0

ありがとうございます、後でフィードバックをお寄せください。 – TheCyberliem

0

だけ明確化のためにそこに私の楕円上FlatMapFunctionを使用してとMaven

を経由してコンパイルするときにバージョンの不一致のように見えます

楕円上で、私はこれを持っていた

public Iterable<String> call(String s) 
一方

Mavenを使用してコンパイルするとき、私は

public Iterator<Rating> call(String s) 

を使用するためにこれが苦しみの原因となっていたが、今では後者を使用して解決しました。

関連する問題