我有一个任务要在我的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)
这方面的任何帮助都将被考虑。。
1条答案
按热度按时间polhcujo1#
出现上述问题的一个可能原因应该是您使用了带有ServletAPI的spark jar,即javax.servlet.*通常您可以使用maven获得spark jar,现在您尝试将应用程序放置在tomcat容器中,并尝试在加载类时运行它,tomcat发现这个特定jar有servlet jar,而没有加载这个jar,因此这个既有spark类又有servlet的jar没有加载,最终ti找不到javasparkcontext类一种方法是删除来自spark jar的servlet api