下面的代碼在Exception in thread "main" java.lang.NoSuchMethodError: org.apache.spark.sql.SQLContext.implicits()Lorg/apache/spark/sql/SQLContext$implicits$
火花1.3.1 SQL庫:異常在線程 「主」 java.lang.NoSuchMethodError:org.apache.spark.sql.SQLContext.implicits()
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.log4j.Logger
import org.apache.log4j.Level
object Small {
def main(args: Array[String]) {
Logger.getLogger("org.apache.spark").setLevel(Level.WARN)
Logger.getLogger("org.eclipse.jetty.server").setLevel(Level.OFF)
// set up environment
val conf = new SparkConf()
.setMaster("local[1]")
.setAppName("Small")
.set("spark.executor.memory", "2g")
val sc = new SparkContext(conf)
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
import sqlContext.implicits._
val df = sc.parallelize(Array((1,30),(2,10),(3,20),(1,10), (2,30))).toDF("books","readers")
df.show
項目結果是建有SBT:
name := "Small"
version := "1.0"
scalaVersion := "2.10.4"
libraryDependencies += "org.apache.spark" %% "spark-core" % "1.3.1"
libraryDependencies += "org.apache.spark" %% "spark-sql" % "1.3.1"
我運行這個與提交腳本:
#!/bin/sh
/home/test/usr/spark-1.1.0/bin/spark-submit \
--class Small \
--master local[*] \
--driver-memory 2g \
/home/test/wks/Pairs/target/scala-2.10/small_2.10-1.0.jar
任何想法?
SBT編譯並打包此代碼。然而,當我嘗試使用sbt run
運行這段代碼,我得到另一個異常:[error] (run-main-0) scala.reflect.internal.MissingRequirementError: class org.apache.spark.sql.catalyst.ScalaReflection in JavaMirror with [email protected] of type class java.net.URLClassLoader with classpath [file:/home/test/.ivy2/cache/org.scala-lang/scala-library/jars/scala-library-2.10.4.jar, ...
有沒有什麼辦法讓sbt run
包括所有依賴斯卡拉啓動程序時?
您的spark實例是否也使用1.3.x版本? NoSuchMethodError幾乎總是意味着運行時可用的類文件與編譯程序時所用的類文件不同。 – jarandaf
我在sbt文件中指定了'libraryDependencies + =「org.apache.spark」%%「spark-core」%「1.3.1」',所以我假設'sbt package'和'sbt run'應該使用spark 1.3。 1.他們不是嗎? – zork
您正在將您的工作提交給spark實例; '/ home/test/usr/spark-1.1.0/bin/spark-submit'顯示了我所指的內容(當你在編譯時使用1.3.1時,spark實例的版本是1.1.0)。請更新您的火花版本,以便它們匹配。 – jarandaf