将Spark源代码导入intellj,构建错误:未找到:键入SparkFlumeProtocol和EventBatch

key*_*int 5 compiler-errors build intellij-idea maven apache-spark

IntelliJ:14.1.4

Spark:1.5发布源代码

我正在将Spark源代码导入IntellJ,并在Spark网站上执行以下步骤.

在构建和编译项目时,我遇到了以下错误.我已经google了一下,尝试了火花用户列表中为"生成源和更新文件夹"在Maven工具栏中为"Spark Project External Flume Sink"提供的内容,但仍然有相同的错误.

我很确定这是一个解决问题,因为所有其他类都已成功解决.也许我没有正确使用IntelliJ?有什么建议吗?非常感谢你.

Error:(45, 66) not found: type SparkFlumeProtocol
  val transactionTimeout: Int, val backOffInterval: Int) extends SparkFlumeProtocol with Logging {
                                                                 ^
Error:(70, 39) not found: type EventBatch
  override def getEventBatch(n: Int): EventBatch = {
Run Code Online (Sandbox Code Playgroud)

key*_*int 13

我已经解决了这个问题,结果证明在默认设置下导入Spark源代码时会排除 "Spark Project External Flume Sink" .

我做了什么:

  1. 文件 - >项目结构 - >模块 - >"spark-streaming-flume-sink_2.10" - >来源
  2. 在树的文件夹显示中,最初"目标"文件夹被排除,但"SparkFlumeProtocol"和"EventBatch"类被编译到此文件夹中.
  3. 将"target"文件夹设置为"Sources",然后将"target"下的所有内容保留为"Excluded","scala-2.10"除外,请参见随附的屏幕截图.

通过这种方式,包含了编译类,并且可以在重新构建项目之后正确地解析类.

在此输入图像描述

---更新2016年6月8日--------

或者更具体地说,该模块的整个路径

请注意类型和颜色,它会影响包装名称

package org.apache.spark.streaming.flume.sink;  
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述