scala – java.lang.NoClassDefFoundError:org / apache / spar
我是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 我添加了以下依赖关系 我甚至尝试了1.2.0的Spark-streaming-twitter,但也给了我同样的错误. 我在这里先向您的帮助表示感谢. 问候, 解决方法
谢谢你的建议.我只能使用SBT程序集来解决这个问题.以下是关于我如何做到这一点的细节.
Spark – 已经存在于Cloudera 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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Error: Could not link: /usr/local/etc/bash_completion.d
- WebService CXF学习(入门篇1):CXF由来
- Vim多行编辑就像在sublimetext?
- 简单的脚本,用于服务器应用的启停备份部署及回滚
- Redisson分布式锁实现
- scala – 如何将数据集[(String,Seq [String])]转换为数据集
- angular-ng-bootstrap模式在交叉点击时不关闭
- vue-cli+webpack在生成的项目中使用bootstrap实例代码
- bash – 如何在每行输入中找到唯一字符?
- twitter-bootstrap – Twitter的Bootstrap popover无效