2016-12-29 5 views
0

i Funken sql versuchen will, ich zunächst die sind/Funke Schal verwendet diesen Code einfügenVerwendung Funken sql durch Scala IDE

val sqlcontext=new org.apache.spark.sql.SQLContext(sc) 

val data=sc.textFile("hdfs://localhost:9000/cars.csv") 
val mapr=data.map (p => p.split(',')) 
val MyMatchRDD=mapr.map(p =>MyMatch(p(0).toString(),p(1).toString(),p(2).toString(), 
    p(3).toString(),p(4).toString(),p(5).toString(),p(6).toString(),p(7).toString(), 
    p(8).toString())) 

import sqlcontext.implicits._ 
val personDF=MyMatchRDD.toDF() 
personDF.registerTempTable("Person") 
val res = sqlcontext.sql("SELECT * FROM Person") 
res.collect().foreach(println) 

ich kein Problem bekommen habe, ist alles gut. Aber wenn ich das scala ide verwendet i in pom-Datei (Maven)

<dependency> 
    <groupId>org.apache.spark</groupId> 
    <artifactId>spark-core_2.10</artifactId> 
    <version>1.3.0</version> 
</dependency> 

<dependency> 
    <groupId>org.apache.spark</groupId> 
    <artifactId>spark-catalyst_2.10</artifactId> 
    <version>1.3.0</version> 
</dependency> 

<dependency> 
    <groupId>org.apache.spark</groupId> 
    <artifactId>spark-sql_2.10</artifactId> 
    <version>1.3.0</version> 
</dependency> 

und ich verwendet, um den gleichen Code

import org.apache.spark.SparkConf 
import org.apache.spark.SparkContext._ 
import org.apache.spark.SparkContext 
import org.apache.spark.sql.SQLContext 
import org.slf4j.Logger 
import org.slf4j.LoggerFactory; 

object SparkSQL { 
    case class MyMatch(col1: String, col2: String,col3: String, col4 :String ,col5: String, 
     col6: String,col7 :String ,col8: String, 
     col9: String) 

    def main(args:Array[String]) { 
     val sparkConf = new SparkConf().setAppName("HiveFromSpark").setMaster("local") 
     val sc = new SparkContext(sparkConf) 
     val sqlcontext=new org.apache.spark.sql.SQLContext(sc) 

     val data=sc.textFile("hdfs://localhost:9000/cars.csv") 
     val mapr=data.map (p => p.split(',')) 
     val MyMatchRDD=mapr.map(p =>MyMatch(p(0).toString(),p(1).toString(),p(2).toString(),p(3).toString(), 
      p(4).toString(),p(5).toString(),p(6).toString(),p(7).toString(), 
      p(8).toString())) 

     import sqlcontext.implicits._ 
     val personDF=MyMatchRDD.toDF() 
     personDF.registerTempTable("Person") 
     val res = sqlcontext.sql("SELECT * FROM Person") 
     res.collect().foreach(println) 
    } 
} 

Ich habe dieses Problem

Exception in thread "main" scala.reflect.internal.MissingRequirementError: class org.apache.spark.sql.catalyst.ScalaReflection in JavaMirror with primordial classloader with boot classpath [D:\scala-SDK-4.4.1-vfinal-2.11-win32.win32.x86_64\eclipse\plugins\org.scala-

Danke Voraus für Ihre Hilfe

+0

ausgewaehlt Darf ich fragen, wie Sie zu der Entscheidung kam Spark-Version 1.3.0 zu benutzen? – AKSW

Antwort

1

Sie eine falsche Scala Version verwenden - Spark s mit Scala Version 2.10 kompiliert. Überprüfen Sie Ihre Laufzeit- und Compiler-Scala-Version.

Warum Sie verwenden so alt Abhängigkeiten? Funke hat Version 2.0.2 jetzt mit Scala 2.11

Empfohlene Aktionen:

  1. (optional) Ändern <version>1.3.0</version>-<version>2.0.2</version>
  2. In Ihren Scala-Compiler, ändert Version 2.11 (falls aktualisiert Spark 2) oder 2.10 (wenn Sie immer noch Spark 1 verwenden)
  3. Stellen Sie sicher, dass Sie die richtige Scala-Version auf Ihrem Computer installiert haben - 2.11 im Falle von Spark 2, 2.10 im Fall von Spark 1. Sie können die Scala-Version durch Eingabe von scala -version in der Konsole
  4. überprüfen
  5. Stellen Sie sicher, dass Ihre Scala IDE unterstützt Scala-Version, die
+0

bin neu mit Funken, was soll ich bitte tun? Vielen Dank im Voraus –

+0

In Ihrer pom.xml ist Ihre Spark-Version 1.3.0. Sie sollten dies auf die neueste Version aktualisieren. Ab sofort ist es 2.0.2. – jabbathehutt1234

+0

Was ist mit dem Compiler Wie aktualisiere ich auf Scala 2.11? –