gpt4 book ai didi

scala - java.lang.NoClassDefFoundError : org/apache/spark/streaming/twitter/TwitterUtils$ while running TwitterPopularTags

转载 作者:行者123 更新时间:2023-12-03 13:58:19 25 4
gpt4 key购买 nike

我是 Spark 流和 Scala 的初学者。对于项目要求,我试图运行 github 中的 TwitterPopularTags 示例。由于 SBT 组件对我不起作用并且我不熟悉 SBT,因此我正在尝试使用 Maven 进行构建。经过很多最初的打嗝,我能够创建 jar 文件。但是在尝试执行它时,我收到以下错误。有人可以帮我解决这个问题吗?

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/spark/streaming/twitter/TwitterUtils$
at TwitterPopularTags$.main(TwitterPopularTags.scala:43)
at TwitterPopularTags.main(TwitterPopularTags.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.spark.deploy.SparkSubmit$.launch(SparkSubmit.scala:331)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:75)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
Caused by: java.lang.ClassNotFoundException: org.apache.spark.streaming.twitter.TwitterUtils$
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 9 more

我添加了以下依赖项
Spark 流_2.10:1.1.0
Spark-core_2.10:1.1.0
Spark-streaming-twitter_2.10:1.1.0

我什至尝试了 Spark-streaming-twitter 的 1.2.0,但这也给了我同样的错误。

我在这里先向您的帮助表示感谢。

问候,
vpv

最佳答案

感谢您提出建议。我只能通过使用 SBT 程序集来解决这个问题。以下是有关我如何做到这一点的详细信息。

Spark - 已经存在于 Cloudera VM 中
Scala - 不确定 Cloudera 中是否存在,如果没有,我们可以安装它
SBT - 这也需要安装。我在本地机器上进行了安装并将 Jar 转移到 VM。为了安装它,我使用了以下链接

https://gist.github.com/visenger/5496675

1)一旦创建了所有这些。我们必须为我们的项目创建父文件夹。我创建了一个名为 Twitter 的文件夹。

2) 使用以下结构创建另一个文件夹 Twitter/src/main/scala,并在此文件夹中创建名为 TwitterPopularTags.scala 的 .scala 文件。这与我们从 github 获得的代码略有不同。我不得不更改导入语句

import org.apache.spark.streaming.Seconds
import org.apache.spark.streaming.StreamingContext
import org.apache.spark.streaming.StreamingContext._
import org.apache.spark.SparkContext._
import org.apache.spark.streaming.twitter._
import org.apache.spark.SparkConf

3)在此之后,在父文件夹下创建另一个文件夹,名称如下

推特/项目

并创建一个名为 assembly.sbt 的文件。这具有程序集插件的路径。以下是文件中的完整代码。
resolvers += Resolver.url("sbt-plugin-releases-scalasbt", url("http://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/"))

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.12.0")

4) 上述两个创建完成后,在项目(Twitter)的父目录中创建一个名为 build.sbt 的文件。这是我们需要提供我们需要创建的 .Jar 文件的名称以及依赖项的地方。请注意,即使此文件中代码之间的空白行也很重要。
name := "TwitterPopularTags"

version := "1.0"

mergeStrategy in assembly <<= (mergeStrategy in assembly) { (old) =>
{
case PathList("META-INF", xs @ _*) => MergeStrategy.discard
case x => MergeStrategy.first
}
}

libraryDependencies += "org.apache.spark" %% "spark-core" % "1.1.0" % "provided"

libraryDependencies += "org.apache.spark" %% "spark-streaming" % "1.1.0" % "provided"

libraryDependencies += "org.apache.spark" %% "spark-streaming-twitter" % "1.2.0"

libraryDependencies += "org.twitter4j" % "twitter4j-stream" % "3.0.3"

resolvers += "Akka Repository" at "http://repo.akka.io/releases/"

5)最后我们必须打开终端并转到项目的父文件夹(Twitter)。从这里输入以下命令:
sbt assembly

这将下载依赖项并创建我们需要的 jar 文件。

6)为了运行程序,我们需要在我们的 ID 下创建一个 twitter 应用程序并提供身份验证 token 和其他详细信息。以下链接中提供了有关如何创建它的详细步骤。

http://ampcamp.berkeley.edu/3/exercises/realtime-processing-with-spark-streaming.html

7) 完成上述所有操作后,我们可以使用 VM 中的 spark-submit 命令来运行作业。示例命令是
./bin/spark-submit \
--class TwitterPopularTags \
--master local[4] \
/path/to/TwitterPopilarTags.jar \
comsumerkey consumersecret accesstoken accesssecret

8)这会将输出打印到控制台,以便监控输出最好降低频率
通过调整代码。

如果需要更多详细信息,请告诉我。

感谢和问候,

VPV

关于scala - java.lang.NoClassDefFoundError : org/apache/spark/streaming/twitter/TwitterUtils$ while running TwitterPopularTags,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28165032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com