加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – java.lang.NoClassDefFoundError:org / apache / spar

发布时间:2020-12-16 09:19:42 所属栏目:安全 来源:网络整理
导读:我是Spark Stream和Scala的初学者.对于项目要求,我试图运行在github中存在的TwitterPopularTag示例.由于SBT大会没有为我工作,我对SBT不熟悉,所以我试图使用Maven来构建.经过很多初步打嗝,我能够创建jar文件.但是当尝试执行它时,我收到以下错误.有人可以帮我
我是Spark Stream和Scala的初学者.对于项目要求,我试图运行在github中存在的TwitterPopularTag示例.由于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

我添加了以下依赖关系
火花streaming_2.10:1.1.0
火花core_2.10:1.1.0
火花流-twitter_2.10:1.1.0

我甚至尝试了1.2.0的Spark-streaming-twitter,但也给了我同样的错误.

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

问候,
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)之后,在父文件夹下创建另一个文件夹,名称如下

Twitter的/项目

并创建一个名为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)创建上述两项后,在名称为build.sbt的项目(Twitter)的父目录中创建一个文件.这是我们需要提供我们需要创建的.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应用程序,并提供auth令牌和其他细节.有关如何创建此操作的详细步骤,请参见以下链接.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读