Java 在web应用程序中使用apache spark作为缓存

Java 在web应用程序中使用apache spark作为缓存,java,caching,hadoop,apache-spark,Java,Caching,Hadoop,Apache Spark,我有一项任务要在我的webapp中使用Spark作为缓存,我浏览了文档中共享的示例java代码,并能够独立运行它 但当我在servlet中在我的webapp中初始化它时,init也尝试在spring上下文中初始化它,但无论如何都失败了 我正在使用ApacheSpark1.1.0,使用hadoop2.4Spark-assembly-1.1.0-hadoop2.4.0.jar的预构建包 我的名字 init() { System.out.println("BaseService ini

我有一项任务要在我的webapp中使用Spark作为缓存,我浏览了文档中共享的示例java代码,并能够独立运行它

但当我在servlet中在我的webapp中初始化它时,init也尝试在spring上下文中初始化它,但无论如何都失败了

我正在使用ApacheSpark1.1.0,使用hadoop2.4Spark-assembly-1.1.0-hadoop2.4.0.jar的预构建包

我的名字

init() {
        System.out.println("BaseService initialized");
        SparkConf conf = new SparkConf().setAppName("Spark").setMaster("local[*]");
        sparkContext = new JavaSparkContext(conf);
        cacheMap = new HashMap<>();     
    }
错误:当我尝试使用Jetty作为服务器时

 WEB-INF\lib\spark-assembly-1.1.0-hadoop2.4.0.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
     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)

这方面的任何帮助都将被解释。

上述问题的一个可能原因应该是您拥有具有servlet api(即javax.servlet)的spark JAR。*大多数情况下,您可以使用maven获得spark JAR,现在,您尝试将应用程序放在tomcat容器中,并尝试在加载类的同时运行它,tomcat发现这个特定的jar有servlet jar,但没有加载这个jar,因此这个包含spark类和servlet的jar没有加载。最终,我找不到JavaSparkContext类。一种解决方法是删除spark jar的servlet api

当组装好的jar没有正确构建时,我遇到了这个错误。尝试使用以下方法创建一个胖jar:然后使用spark Submita运行它。我已经提到,我可以通过spark submit或直接从main方法独立运行文档中的所有示例。主要问题是我无法在我的应用程序中初始化spark上下文,即使使用我在SampleYes中使用的同一组依赖项也是如此。但根据错误,运行此应用程序时,jar似乎没有被传递到集群。在创建SparkConf时,您是否尝试过提及jar?新的SparkConf.setJarsnew字符串[]{jar依赖项的路径}。独立运行时,依赖项的发送方式与webapps的使用方式可能有所不同