【问题标题】:java.lang.NoSuchMethodError: org.apache.spark.sql.hive.HiveContext.sql(Ljava/lang/String;)Lorg/apache/spark/sql/DataFramejava.lang.NoSuchMethodError: org.apache.spark.sql.hive.HiveContext.sql(Ljava/lang/String;)Lorg/apache/spark/sql/DataFrame
【发布时间】:2016-11-14 09:27:53
【问题描述】:

我在使用 spark-submit 运行 spark 程序时遇到错误。

我的 spark-cluster 是 2.0.0 版本,我使用 sbt 编译我的代码,下面是我的 sbt 依赖项。

libraryDependencies ++= Seq(
  "commons-io" % "commons-io" % "2.4",
  "com.google.guava" % "guava" % "19.0",
  "jfree" % "jfreechart" % "1.0.13",
  ("org.deeplearning4j" % "deeplearning4j-core" % "0.5.0").exclude("org.slf4j", "slf4j-log4j12"),
  "org.jblas" % "jblas" % "1.2.4",
  "org.nd4j" % "canova-nd4j-codec" % "0.0.0.15",
  "org.nd4j" % "nd4j-native" % "0.5.0" classifier "" classifier "linux-x86_64",
  "org.deeplearning4j" % "dl4j-spark" % "0.4-rc3.6" ,
  "org.apache.spark" % "spark-sql_2.10" % "1.3.1", 
  "org.apache.spark" % "spark-hive_2.10" % "1.3.1",
  "org.apache.hive" % "hive-serde" % "0.14.0", 
  ("org.deeplearning4j" % "arbiter-deeplearning4j" % "0.5.0"))



16/11/14 22:57:03 INFO hive.HiveSharedState: Warehouse path is 'file:/home/hduser/spark-warehouse'.
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.spark.sql.hive.HiveContext.sql(Ljava/lang/String;)Lorg/apache/spark/sql/DataFrame;
    at poc.common.utilities.StockData$.fetchStockData(StockData.scala:15)
    at poc.analaticsEngine.AnalaticsStockWorkBench.fetchTrainingDataSet(AnalaticsStockWorkBench.scala:69)
    at poc.analaticsEngine.AnalaticsStockWorkBench.trainModel(AnalaticsStockWorkBench.scala:79)
    at test.poc.analatics.StockPrediction$.testTrainSaveModel(StockPrediction.scala:21)
    at test.poc.analatics.StockPrediction$.main(StockPrediction.scala:10)
    at test.poc.analatics.StockPrediction.main(StockPrediction.scala)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:729)
    at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:185)
    at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:210)
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:124)
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
16/11/14 22:57:03 INFO spark.SparkContext: Invoking stop() from shutdown hook

【问题讨论】:

  • 失败的地方在下面,并且在 spark-local val sqlData = Spark.hiveContext.sql(hiveQueryForStockCloseValue);

标签: apache-spark deeplearning4j hivecontext


【解决方案1】:

首先,您是说您使用的是 Spark 2.0.0,但在您的依赖项中有

"org.apache.spark" % "spark-sql_2.10" % "1.3.1", 
"org.apache.spark" % "spark-hive_2.10" % "1.3.1",

您需要将这些依赖项更改为版本 2.0.0 以使其与 Spark 保持一致。此外,您不需要单独指定spark-sql 依赖项,因为它已经包含在spark-hive 中。 hive-serde 现在也有 2.1.0 版本,所以 0.14 可能已经过时了。

【讨论】:

  • 是的。 2.0.0 版本更新在我的脑海中。但是 1.3.1 已经添加到我的 jar 中,它不应该抱怨我所想的方法 notfound 。
【解决方案2】:

请按照 dl4j 示例进行版本控制。我不确定你在哪里或如何得到canova(我们已经将近6个月没有使用它了?)

https://github.com/deeplearning4j/dl4j-examples/blob/master/dl4j-examples/pom.xml

【讨论】:

  • canova 被错误添加,未被使用。
  • 我收到另一个错误:线程“main”中的异常 java.lang.NoSuchMethodError: org.apache.spark.Accumulator.(Ljava/lang/Object;Lorg/apache/spark /AccumulatorParam;)V 在 org.deeplearning4j.spark.impl.common.SumAccum.(SumAccum.java:14) 在 org.deeplearning4j.spark.impl.common.Adder.(Adder.java:17) ) 在 org.deeplearning4j.spark.impl.multilayer.SparkDl4jMultiLayer.fitDataSet(SparkDl4jMultiLayer.java:189) 在 poc.analaticsEngine.AnalaticsStockWorkBench 的 org.deeplearning4j.spark.impl.multilayer.SparkDl4jMultiLayer.runIteration(SparkDl4jMultiLayer.java:237) $anonfun$tra
  • 我使用的是 spark 2.0.0 core jars。
  • Dl4j 还不支持 spark 2.0。
猜你喜欢
  • 1970-01-01
  • 2014-02-17
  • 2018-11-26
  • 2021-01-11
  • 2012-08-24
  • 2016-02-07
  • 1970-01-01
  • 2014-12-26
  • 1970-01-01
相关资源
最近更新 更多