2014-07-14 10 views
17

Questa è una bella domanda di noob.Problemi nella creazione di una semplice applicazione SparkSQL

Sto cercando di conoscere SparkSQL. Ho seguito l'esempio descritto qui: http://spark.apache.org/docs/1.0.0/sql-programming-guide.html

Tutto funziona bene nella Spark-shell, ma quando provo ad usare SBT per costruire una versione batch, ottengo il seguente messaggio di errore: object sql is not a member of package org.apache.spark

Purtroppo, sono piuttosto nuovo a sbt, quindi non so come correggere questo problema. Sospetto di dover includere dipendenze aggiuntive, ma non riesco a capire come.

Ecco il codice che sto cercando di compilare:

/* TestApp.scala */ 
import org.apache.spark.SparkContext 
import org.apache.spark.SparkContext._ 
import org.apache.spark.SparkConf 

case class Record(k: Int, v: String) 

object TestApp { 
def main(args: Array[String]) { 
    val conf = new SparkConf().setAppName("Simple Application") 
    val sc = new SparkContext(conf) 
    val sqlContext = new org.apache.spark.sql.SQLContext(sc) 
    import sqlContext._ 
    val data = sc.parallelize(1 to 100000) 
    val records = data.map(i => new Record(i, "value = "+i)) 
    val table = createSchemaRDD(records, Record) 
    println(">>> " + table.count) 
} 
} 

L'errore viene segnalato nella riga in cui cerco di creare uno SqlContext.

Ecco il contenuto del file SBT:

name := "Test Project" 

version := "1.0" 

scalaVersion := "2.10.4" 

libraryDependencies += "org.apache.spark" %% "spark-core" % "1.0.0" 

resolvers += "Akka Repository" at "http://repo.akka.io/releases/" 

Grazie per l'aiuto.

+2

La prego di rispondere alla tua domanda utilizzando il tuo sezione risposta? La community di sbt su StackOverflow apprezzerebbe molto. –

risposta

32

Come spesso accade, l'atto di porre la domanda mi ha aiutato a capire la risposta. La risposta è aggiungere la seguente riga nel file sbt.

libraryDependencies += "org.apache.spark" %% "spark-sql" % "1.0.0" 

Ho anche notato che c'è un ulteriore problema nel programma di cui sopra. Ci sono troppi argomenti nella chiamata a createSchemaRDD. Questa riga dovrebbe essere la seguente:

val table = createSchemaRDD(records) 
+3

e aggiungere Hive - libraryDependencies + = "org.apache.spark"% "spark-hive_2.10"% "1.1.0" - grazie mvnrepository.com! – TobyEvans

+0

niente come cercare un problema e scoprire che hai risolto il problema l'anno precedente ma non riesci a ripetere di nuovo i passaggi ... quello che dovevo fare questa volta era chiudere e riaprire Intellij prima che riprendesse consistentemente la nuova libreriaDipendenze dichiarazione. Questo potrebbe salvare qualcun altro poche * ore * ... – TobyEvans

9

Grazie! Mi sono imbattuto in un problema simile durante la creazione di un'app Scala in Maven. Sulla base di ciò che hai fatto con SBT, ho aggiunto le corrispondenti dipendenze Maven come segue e ora sono in grado di compilare e generare il file jar.

<dependency> 
    <groupId>org.apache.spark</groupId> 
    <artifactId>spark-sql_2.11</artifactId> 
    <version>1.2.1</version> 
</dependency> 
0

ho ottenuto il problema simile, nel mio caso, ho appena copia incollato il seguito di installazione sbt dal online con scalaVersion: = "2.10.4", ma nel mio ambiente, io in realtà sono la versione 2.11.8 Scala

così nuovamente aggiornato & pacchetto sbt eseguito, problema risolto

name := "Test Project" 

version := "1.0" 

scalaVersion := "2.10.4" 

libraryDependencies += "org.apache.spark" %% "spark-core" % "1.0.0" 

resolvers += "Akka Repository" at "http://repo.akka.io/releases/" 
Problemi correlati