spark执行源码中的例子时报错

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spark执行源码中的例子时报错相关的知识,希望对你有一定的参考价值。

在运行spark源码时报错:

Error:(45, 66) not found: type SparkFlumeProtocol
  val transactionTimeout: Int, val backOffInterval: Int) extends SparkFlumeProtocol with Logging {
                                                                 ^

...

Error:(25, 27) not found: type EventBatch
  def isErrorBatch(batch: EventBatch): Boolean = {
                          ^

Error:(86, 51) not found: type SparkFlumeProtocol
    val responder = new SpecificResponder(classOf[SparkFlumeProtocol], handler.get)
                                                  ^

这一堆错误都出现在spark源码目录的external文件夹中...

 

解决方案:

我觉得出现这个问题的原因还是在对源码进行gen-idea的过程中下载需要的jar包时出现问题导致需要的jar包不全,我现在虽然可以编译成功了,但是具体的解决方案仍然不清楚,因为我同时做了如下2件事:

1.依次点击:View -> Tool Windows -> Maven Projects ->Generate Sources and Update Folders For All Projects(两个箭头首尾相连的那个按钮),然后等待...(这个过程如果你需要关闭idea,请随意,因为重启idea后他会继续...)

2.重复在spark源码目录下进行sbt->gen-idea的操作,让他自己在那下载不用

 

运行example时报错:

1.loadClass时报错java.lang.ClassNotFoundException: scala.Function1

修改在project structrue中如下

技术分享

 

需要将运行的moudle选中:

技术分享

 

如下只选择了example报错:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/spark/sql/SparkSession$
at org.apache.spark.examples.sql.RDDRelation$.main(RDDRelation.scala:34)
at org.apache.spark.examples.sql.RDDRelation.main(RDDRelation.scala)
Caused by: java.lang.ClassNotFoundException: org.apache.spark.sql.SparkSession$
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

 

后添加scala的liberay时选中所有的module

 














以上是关于spark执行源码中的例子时报错的主要内容,如果未能解决你的问题,请参考以下文章

springboot项目中调用jar包中的类时报错 — 没有注入类

springboot项目中调用jar包中的类时报错 — 没有注入类

M1 Mac安装Homebrew报错

启动vue项目时报错spawn cmd ENOENT errno: -4058

开发日常解压system.img时报错,解决办法

开发日常解压system.img时报错,解决办法