2

我正在使用 spark-cassandra-connector 创建一个 java API。当它在 eclipse 上运行时,它工作正常。然后我创建了一个可运行的 jar 文件并通过命令行执行它,它给了我以下错误。

15/02/17 14:56:41 INFO spark.HttpServer: Starting HTTP Server
    15/02/17 14:56:42 INFO server.Server: jetty-8.y.z-SNAPSHOT
    15/02/17 14:56:42 INFO server.AbstractConnector: Started SocketConnector@0.0.0.0:58625
    Exception in thread "main" java.lang.reflect.InvocationTargetException
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
            at java.lang.reflect.Method.invoke(Unknown Source)
            at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoa
    der.java:58)
    Caused by: java.lang.Exception: Could not find resource path for Web UI: org/apache/spark/ui/static    
    at org.apache.spark.ui.JettyUtils$.createStaticHandler(JettyUtils.scala:
    133)
            at org.apache.spark.ui.SparkUI.initialize(SparkUI.scala:70)
            at org.apache.spark.ui.SparkUI.<init>(SparkUI.scala:60)
            at org.apache.spark.ui.SparkUI.<init>(SparkUI.scala:42)
            at org.apache.spark.SparkContext.<init>(SparkContext.scala:222)
            at org.apache.spark.SparkContext.<init>(SparkContext.scala:97)
            at com.netspective.watchtower.bigdata.utils.Config.getSparkContext(Confi
    g.java:32)
            at com.netspective.watchtower.bigdata.main.Main.main(Main.java:17)
            ... 5 more

与 eclipse 日志相比,日志文件的唯一区别在于 jetty-server 的版本。在 Eclipse 中,它将码头服务器版本标识为 8.1.14 v232。但在其标识为 8.yz SNAPSHOT 之上。这是因为码头服务器还是其他原因?我完全被困在这里。

我的 sparkContext 配置如下

  conf.setAppName("Java API demo");
        conf.setMaster("local[*]");
4

1 回答 1

3

Spark 使用“getResource”来读取与其打包的文件。在这里,它尝试读取 Web UI 的一些静态文件,如果将文件打包到 jar 中,这显然不起作用。相反,必须将它们提取到 jar 中,这是 Eclipse 作为第一个选项提供的: 1

于 2016-06-13T20:03:42.700 回答