java - 在 Jenkins 中找不到 Spark-version-info.properties

标签 java apache-spark maven-3 jenkins-plugins sparkcore

我正在开发一个使用 spark-core lib 的插件。当我将它作为 java 应用程序运行时没问题,但是当我在 Jenkins 中运行该插件时它显示一个错误,上面写着

    java.lang.ExceptionInInitializerError
    at org.apache.spark.package$.<init>(package.scala:91)
    at org.apache.spark.package$.<clinit>(package.scala)
    at org.apache.spark.SparkContext$$anonfun$3.apply(SparkContext.scala:185)
    at org.apache.spark.SparkContext$$anonfun$3.apply(SparkContext.scala:185)
    at org.apache.spark.internal.Logging$class.logInfo(Logging.scala:54)
    at org.apache.spark.SparkContext.logInfo(SparkContext.scala:74)
    at org.apache.spark.SparkContext.<init>(SparkContext.scala:185)
    at org.apache.spark.SparkContext$.getOrCreate(SparkContext.scala:2275)
    at org.apache.spark.sql.SparkSession$Builder$$anonfun$8.apply(SparkSession.scala:831)
    at org.apache.spark.sql.SparkSession$Builder$$anonfun$8.apply(SparkSession.scala:823)
    at scala.Option.getOrElse(Option.scala:121)
    at org.apache.spark.sql.SparkSession$Builder.getOrCreate(SparkSession.scala:823)
    at com.plugin.goettingen_plugin.HelloWorldBuilder.perform(HelloWorldBuilder.java:88)
    at hudson.tasks.BuildStepCompatibilityLayer.perform(BuildStepCompatibilityLayer.java:75)
    at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
    at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:785)
    at hudson.model.Build$BuildExecution.build(Build.java:205)
    at hudson.model.Build$BuildExecution.doRun(Build.java:162)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:537)
    at hudson.model.Run.execute(Run.java:1741)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
    at hudson.model.ResourceController.execute(ResourceController.java:98)
    at hudson.model.Executor.run(Executor.java:408)
Caused by: org.apache.spark.SparkException: Error while locating file spark-version-info.properties
    at org.apache.spark.package$SparkBuildInfo$.liftedTree1$1(package.scala:75)
    at org.apache.spark.package$SparkBuildInfo$.<init>(package.scala:61)
    at org.apache.spark.package$SparkBuildInfo$.<clinit>(package.scala)
    ... 23 more
Caused by: java.lang.NullPointerException
    at java.util.Properties$LineReader.readLine(Properties.java:434)
    at java.util.Properties.load0(Properties.java:353)
    at java.util.Properties.load(Properties.java:341)
    at org.apache.spark.package$SparkBuildInfo$.liftedTree1$1(package.scala:64)
    ... 25 more

我正在使用以下代码启动一个 spark session :

SparkSession sparkSession = SparkSession.builder().appName("DP-App").master("local[2]").getOrCreate();

spark-core 库通过名为 package.java 的类搜索文件,返回 null 的代码如下:

InputStream resourceStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("spark-version-info.properties");

由于 spark-version-info.properties 存在于 spark-core lib 中,我尝试将文件转移到 Web-INF,但它仍然无法加载文件。 有没有其他方法可以加载文件并绕过库中的上述代码?

我的依赖项是:

  <dependencies>
    <dependency>
      <groupId>org.jenkins-ci.plugins</groupId>
      <artifactId>credentials</artifactId>
      <version>1.9.4</version>
    </dependency>
    <dependency>
      <groupId>org.apache.spark</groupId>
      <artifactId>spark-mllib_2.11</artifactId>
      <version>2.0.1</version>
</dependency>
  </dependencies>

最佳答案

您缺少 spark-version-info.properties 文件。

所以只需在./core/target/extra-resources下创建一个

λ ~/workspace/big_data/spark/ master* ./build/spark-build-info ./core/target/extra-resources 2.1.1
λ ~/workspace/big_data/spark/ master* cat ./core/target/extra-resources/spark-version-info.properties
version=2.1.1
user=chanhle
revision=dec9aa3b37c01454065a4d8899859991f43d4c66
branch=master
date=2017-06-07T15:12:48Z
url=https://github.com/apache/spark

我在 IntelliJ 上调试 Spark 时也遇到了同样的问题。

关于java - 在 Jenkins 中找不到 Spark-version-info.properties,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42751816/

相关文章:

java - 编译器是否可以有最大输出?

hadoop - 加入 RDD 中的特定行

python - Apache Spark : Job aborted due to stage failure: "TID x failed for unknown reasons"

maven - 如何使用 DependencyGraphBuilder 以编程方式列出所有传递依赖项,包括 Maven 中覆盖的依赖项?

maven - 如何将我的 Maven Jenkins 作业配置为仅构建已 checkin 代码的模块?

maven - tomcat 7 maven 插件快照存储库问题?

java - 如何在Android中的ListView中获取副文本

java - 将父类(super class)中的@Sql 与子类中的@Sql 合并

java - JPanel 的 addMouseListener

scala - dataframereader 如何读取http?