火花蜂巢和数据核



在一个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-core datanucleus-api-jdodatanucleus-rdbms maven 依赖项,版本 3.2.1。

但是现在我得到错误...NoSuchMethodError: org.datanucleus.FlushOrdered.

真正奇怪的是,我确实在生成的战争 WEB-INF/lib 中的 datanucleus-core-3.2.1.jar 中找到了这个类。而且没有其他战争罐子。

有谁知道这是怎么发生的?

详:

  • 马文项目
  • 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) 不够好。

好吧,这真的很愚蠢:我对所有数据核心依赖项都使用了 3.2.1 版,而 Spark 提供的数据核心实际上是 3.2.2 :-\

无论如何,在我的路上,我使用spark-hive制作了这个非常简单的春季Webapp原型。如果有人感兴趣。