2017-06-14 21 views
0

我有一个Spark流应用程序,并且我已重新设置了构建路径,以便使其更清洁。 我重新导入所有的jar文件后,我得到这个我以前从未有过的错误: enter image description here 这怎么可能?我该如何解决这个问题?迭代器<String>重新设置构建路径后未被接受

static FlatMapFunction<Tuple2<String, String>, String> sentimentFunc = new FlatMapFunction<Tuple2<String, String>, String>(){ 
     private static final long serialVersionUID = 1L; 


     @Override 
     public Iterator<String> call(Tuple2<String, String> x) throws Exception { 
      List<String> output = new ArrayList<String>(); 
      if(x._2==null){ 
       output.add("ERR"); 
       return output.iterator(); 
      } 
      boolean like = false, sad = false, angry = false, hilarious = false, neutral = false; 
      boolean [] sentiments = {like, angry, sad, hilarious, neutral}; 
      sentiments = checkEmojis(x, sentiments); 
      if(checkSentiment(sentiments)){ 
       output.add(setSentiment(sentiments)); 
       return output.iterator(); 
      } 

      sentiments = checkText(x, sentiments); 
      output.add(setSentiment(sentiments)); 
      return output.iterator(); 
     } 

    }; 
+0

方法签名与方法中的“return”语句之间存在不兼容性。但是你没有显示后者......所以请将代码粘贴为文本,而不是图片。 – assylias

+0

好的我已经更新了这个问题。代码工作很好,只是五分钟前,所以我不明白如何可能不兼容 – sirdan

+0

我的错误,现在是正确的 – sirdan

回答

2

在火花1.x中,的callFlatMapFunction返回类型为Iterable

在Spark 2.x中,返回类型call对于FlatMapFunction已更改为Iterator

看起来,当您重置构建路径时,您将其更改为指向1.x而不是2.x,从而使所有flatmap函数失效。

+0

我也有这个相同的问题:https://stackoverflow.com/questions/ 44373228/error-with-spark-nosuchmethoderror-scala-predef-conformslscala-predefles 更改pom是不够的。我该如何解决这个问题? – sirdan