2016-08-02 116 views
1

我試圖運行第一個exampleSpark中的Java FlatMapFunction:錯誤:不是抽象的,也不會覆蓋FlatMapFunction中的抽象方法調用(String)

的源代碼是:

/*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(" ")); } 
        }); 
       } 
      } 

當我編譯使用MVN編譯包,下面的錯誤不斷顯示出來:

[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(); } 
}); 

或者更簡單的使用lambda表達式:

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) 

這引起了痛苦,但現在它已經使用後者的解決。

相關問題