对Spark Scala代码库所做的更改不会在运行时反映出来

时间:2018-11-28 16:34:20

标签: java scala apache-spark

首先我要说我是Scala的初学者。我从Github克隆了Spark源代码,然后四处寻找,因为我对Spark的内部工作感到好奇。

但是,当我重建并运行Spark时,似乎并没有反映出我对代码库所做的任何更改。例如,在spark-shell REPL中,将打印初始化

Spark context Web UI available at [some address and port]。这部分来自repl.src.main.scala.org.apache.spark.repl.SparkILoop.scalaenter image description here),是initializationCommands值的一部分。

我执行了以下步骤:

  1. 我尝试仅添加println(s"Spark context Web UI available at ${webUrl}!!!!"来为此消息打印额外的感叹号。
  2. 我跑了build/sbt clean package,成功完成了。
  3. 我从bin/spark-shell开始了我的Spark shell,期望 感叹号将出现在控制台中。他们没有。我有 与以前完全相同的默认消息(不带感叹号)。

不要气our,我注意到18/11/28 08:09:20 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable通常在Spark(和Spark Shell)首次加载到没有Hadoop的本地计算机上时作为​​日志消息打印。很明显,它能够记录警告消息。

我尝试通过向link to Github here中的SparkContext构造函数添加一个简单的日志消息来复制此消息,因为我知道这已初始化并且可以在Spark shell中作为sc使用。我在

中编辑了以下几行
class SparkContext(config: SparkConf) extends Logging {

  logWarning("Hello!!!!")
  /* rest of the constructor code is below */

同样,我遵循相同的清理和构建过程,并希望在控制台中看到带有Hello!!!!的日志消息。

同样,我看到默认警告消息是没有本地Hadoop,但没有我自己的消息。

我为可能是一个非常新奇的问题表示歉意,但是究竟需要做些什么才能使自己的源代码更改显示在运行时?我也不太确定我应该附加哪些信息以帮助人们回答我的问题,并且乐于提供。

1 个答案:

答案 0 :(得分:0)

原来,这对我来说是一个愚蠢的错误。我已经设置并配置了一个现有的Spark安装(用于实际工作,而不是闲逛)。我更改了环境变量,但从未获取我的bash配置文件。明确地说,您应该

export SPARK_HOME=path/to/your/spark/source/code

然后source ~/.bash_profile或您存储环境变量的任何地方。

我从不采购信息,因此在输入spark-shell时,它仍然指向我现有的Spark安装。