当前位置: 首页 > 知识库问答 >
问题:

spark Streaming-Java . lang . nosuchmethoderror错误

叶鸿
2023-03-14

我正在尝试从 Spark 流式处理访问流式推文。

这是软件配置。

Ubuntu 14.04.2 LTS

scala版本

Scala代码运行器版本2.11.7——版权所有2002-2013,LAMP/EPFL

火花提交版本

火花版本1.6.0

以下是代码

object PrintTweets
{
 def main(args: Array[String]) {

  // Configure Twitter credentials using twitter.txt
  setupTwitter()

  // Set up a Spark streaming context named "PrintTweets" that runs locally using
  // all CPU cores and one-second batches of data
  val ssc = new StreamingContext("local[*]", "PrintTweets", Seconds(1))

  // Get rid of log spam (should be called after the context is set up)
  setupLogging()

  // Create a DStream from Twitter using our streaming context
  val tweets = TwitterUtils.createStream(ssc, None)


  // Now extract the text of each status update into RDD's using map()
  val statuses = tweets.map(status => status.getText())

  // Print out the first ten
  statuses.print()

  // Kick it all off
  ssc.start()
  ssc.awaitTermination()
 }
}

Utilities.scala

object Utilities {
/** Makes sure only ERROR messages get logged to avoid log spam. */
def setupLogging() = {
  import org.apache.log4j.{Level, Logger}   
  val rootLogger = Logger.getRootLogger()
  rootLogger.setLevel(Level.ERROR)   
}

/** Configures Twitter service credentials using twiter.txt in the   main workspace directory */
def setupTwitter() = {
  import scala.io.Source

  for (line <- Source.fromFile("./data/twitter.txt").getLines) {
   val fields = line.split(" ")
   if (fields.length == 2) {
    System.setProperty("twitter4j.oauth." + fields(0), fields(1))
   }
 }

}

}

问题:

由于它需要推特4j库,所以我
在日食构建路径中添加了推特4j-核心-4.0.4,推特4j-流-4.0.4作为外部罐子。

然后我运行了程序,它没有抛出任何错误。但是推文没有出现在控制台中。它是空的。

所以我看到了一些论坛,并将twitter4j降级为3.0.3。同样在Eclipse中,我在BuildPath窗口中选择了Scala2.10Library容器。

之后我得到了java.lang.NoSuchMethodError运行时错误。

16/05/14 11:46:01 ERROR Executor: Exception in task 0.0 in stage 0.0 (TID 0)
java.lang.NoSuchMethodError:    twitter4j.TwitterStream.addListener(Ltwitter4j/StreamListener;)V
at    org.apache.spark.streaming.twitter.TwitterReceiver.onStart(TwitterInputDStream.scala:72)
at   org.apache.spark.streaming.receiver.ReceiverSupervisor.startReceiver(ReceiverSupervisor.scala:148)
at org.apache.spark.streaming.receiver.ReceiverSupervisor.start(ReceiverSupervisor.scala:130)
at org.apache.spark.streaming.scheduler.ReceiverTracker$ReceiverTrackerEndpoint$$anonfun$9.apply(ReceiverTracker.scala:575)
at org.apache.spark.streaming.scheduler.ReceiverTracker$ReceiverTrackerEndpoint$$anonfun$9.apply(ReceiverTracker.scala:565)
at org.apache.spark.SparkContext$$anonfun$37.apply(SparkContext.scala:1992)
at org.apache.spark.SparkContext$$anonfun$37.apply(SparkContext.scala:1992)
at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:66)
at org.apache.spark.scheduler.Task.run(Task.scala:89)
at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:213)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)

请帮我解决这个问题。最初我使用Scala 2.11构建了spark。这就是问题所在。我需要卸载所有内容并重新安装Scala 2.10,然后再安装Spark预编译包吗。

或者除了Scala 2.11之外,我的系统中还需要Scala 2.10吗?

共有2个答案

黄信厚
2023-03-14

在我的情况下。我有一个spark java项目。我清理了pom文件并开始按顺序添加。首先解决了火花相关的错误,然后是火花发射器,接下来是基于更大的库。注意我使用的是cdh6.2.0环境

吴欣悦
2023-03-14

上述异常似乎是由火花版本1.6.0twitter4j 3.0.3版本不兼容造成的。

twitter4j.TwitterStreamorg.apache.spark.streaming.twitter.TwitterReceiveronStart方法中传递的,具有方法addListener,该方法接受twitter4j.StreamListener的实例。

twitter4j3.0.3版本没有方法twitter3j.TwitterStream。addListener(StreamListener),相反,它有几个其他的addListener方法,它们采用StreamListener的子类。

twitter4j 4.0.4版本具有所需的方法,所以这个库没有错误。所以更改为twitter4j 3.0.3版本不会解决问题。

问题出在别的地方。

 类似资料:
  • 问题内容: 我使用Jersey作为Rest Web服务和Hibernate实体管理器来持久化JPA模型。我正在使用Tomcat 8作为容器。 这是persistence.xml文件的内容: 我的Rest呼叫就这么简单: 这是我的web.xml文件 但这给了我这个错误: 我无法弄清楚问题出在哪里!有什么帮助吗? 根据建议,这是mvn依赖项:tree日志: 问题答案: 根据@Ravindran Kan

  • 本文向大家介绍解决 java.lang.NoSuchMethodError的错误,包括了解决 java.lang.NoSuchMethodError的错误的使用技巧和注意事项,需要的朋友参考一下 解决 java.lang.NoSuchMethodError的错误 1 原因 在项目依赖比较复杂或者 Java 运行的环境有问题时,或者同一类型的 jar 包有不同版本存在,都可能触发该错误。本质上说是

  • 我刚开始使用Spark streaming并尝试运行本教程中的一个示例,我正在跟踪制作并运行我们自己的NetworkWordCount。我已经完成了第8步,并从SBT制作了一个罐子。 现在我正在尝试使用第9步中的命令运行deploy my jar,如下所示: 我创建的jar包含“NetworkWordCount”类,该类具有来自spark示例的以下代码 我无法确定我做错了什么。

  • 问题内容: 当我运行junit测试时,我可以获得正确的结果,并且数据可以存储到数据库中。 当我将项目部署到tomcat时,出现了此异常。 我的Spring版本是3.1.1,tomcat版本是6.0。 这是行不通的 ): pom.xml: 问题答案: 正确的签名是 but something tries to call 使用spring 3.1或更高版本来构建应用程序和之前的版本3.1在tomcat

  • 我正在尝试从下面的git链接运行代码 但我有个错误 nosuchMethodError:没有静态方法getFont(landroid/content/context;ilandroid/util/typedvalue;ilandroid/widget/textview;)landroid/graphics/typeface;在Landroid/Support/V4/Content/Res/Reso

  • 问题内容: 春天来了 这是我的存储库,这是导致问题的存储库 我该如何解决? 问题答案: ClassTypeInformation在1.1.0版中引入了该方法: 确保您的spring-data-commons版本> = 1.1.0

  • 我在Jenkinsfile中有以下代码,并且已经安装了kubernetes插件。 我得到以下错误 java.lang.NoSuchMethodError:在步骤[approverereceivedevent、approveRequestedEvent、archive、bat、build、catchError、checkout、container、containerLog、createEvent、d

  • 我下载并安装了uCanAccess JAR,方法如下:不使用ODBC从Java操作Access数据库,我正在学习如何使用microsoft Access db for Java,这是我使用的代码 当我运行java程序时,它会出现这样的错误 UCANAccess-2.0.9.3.jar commons-lang-2.6.jar commons-logging-1.1.1.jar 所以...我怎么才能