java—在web应用程序中使用ApacheSpark作为缓存

waxmsbnn  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(334)

我有一个任务要在我的webapp中使用spark作为缓存,我浏览了文档中共享的示例java代码,并且能够独立运行它。
但是当我在webapp中初始化它时(在servlet init()中),我也尝试在spring上下文中初始化它,但不管怎样都失败了。
我使用的是ApacheSpark1.1.0,使用的是hadoop2.4的预构建包(spark-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<>();     
    }

错误:(当tomcat用作服务器时)

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

错误:(当我尝试使用jetty作为服务器时)

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)

这方面的任何帮助都将被考虑。。

polhcujo

polhcujo1#

出现上述问题的一个可能原因应该是您使用了带有ServletAPI的spark jar,即javax.servlet.*通常您可以使用maven获得spark jar,现在您尝试将应用程序放置在tomcat容器中,并尝试在加载类时运行它,tomcat发现这个特定jar有servlet jar,而没有加载这个jar,因此这个既有spark类又有servlet的jar没有加载,最终ti找不到javasparkcontext类一种方法是删除来自spark jar的servlet api

相关问题