【发布时间】:2015-04-23 08:32:30
【问题描述】:
在一个 java spark (&spring) 项目中,我使用了 SparkHiveContext 并在执行时遇到了初始错误ClassNotFoundException: org.datanucleus.api.jdo.JDOPersistenceManagerFactory:
// sparkHiveContext = new JavaHiveContext(sparkContext);
// JavaRDD<MyClass> myRdd = ...
JavaSchemaRDD schema = sparkHiveContext.applySchema(myRdd, MyClass.class);
schema.registerTempTable("temptable");
sparkHiveContext.sql("CREATE TABLE mytable AS SELECT * FROM temptable");
所以我添加了̀datanucleus-coredatanucleus-api-jdo和datanucleus-rdbms maven依赖,版本3.2.1。
但现在我收到错误 ...NoSuchMethodError: org.datanucleus.FlushOrdered。
真正奇怪的是,我确实在生成的战争 WEB-INF/lib 的 datanucleus-core-3.2.1.jar 中找到了这个类。并且在战争中没有其他罐子。
有人知道这是怎么发生的吗?
详情:
- maven 项目
- spark 1.1.1(提供范围)
- 将 $SPARK_HOME/lib/spark-assembly-1.1.1-hadoop2.4.0.jar 包含到 servlet 容器中
- 使用 maven jetty 插件运行(即作为 servlet 容器)
- 在使用 spark-hive 之前效果很好
- 我没有安装 hive,但我们告诉我没有必要
- 我使用spark hive来管理一些hdfs文件的sql接口,主要是spark sql(1.1.1)不够好。
【问题讨论】:
标签: java maven hive apache-spark