1

Ich habe Intellij IDEA Community Edition. Ich brauche Hilfe bei der Konfiguration von Apache Spark für IntellJ. Ich möchte Daten von GA durch Scala..I Verwendung crealytics bekommen ..Intellij Setup Scala und Funke

Mein build.sbt:

name := "scala-project-test" 

version := "1.0" 

scalaVersion := "2.11.8" 

libraryDependencies ++= Seq(
    "org.apache.spark" %% "spark-core" % "1.6.1", 
    "org.apache.spark" %% "spark-sql" % "1.6.1", 
    "com.crealytics" % "spark-google-analytics_2.11" % "0.8.1" 
) 

und analytics.scala

import org.apache.spark.sql.SQLContext 

object analytics { 


    val sqlContext = new SQLContext(sc) 
    val df = sqlContext.read 
    .format("com.crealytics.google.analytics") 
    .option("serviceAccountId", "[email protected]") 
    .option("keyFileLocation", "/Users/userABC/IdeaProjects/scala-project-test/xxxx.p12") 
    .option("ids", "ga:xxxxxx") 
    .option("startDate", "7daysAgo") 
    .option("endDate", "yesterday") 
    .option("dimensions", "date,browser,city") 
    .option("queryIndividualDays", "true") 
    .load() 

    df.select("browser", "users").show() 
} 

Wenn ich Object Analytics RUN gibt ist Fehler: nicht gefunden: Wert sc

Ich denke, es gibt ein Problem über Spark-Konfiguration, weil sc ist ein SparkContext, aber ich weiß nicht, wo es ist.

Irgendwelche Hinweise?

Antwort

0

kurze Antwort

val conf = createSparkConf 
    val sc = new SparkContext(conf) 
    val sqlContext = new SQLContext(sc) 

.....

Im Allgemeinen verwende ich eine SparkContextFactory

object SparkContextFactory { 

    val conf = createSparkConf 
    val sc = new SparkContext(conf) 

    def createSparkSQLContext: SQLContext = { 
    val sc = new SparkContext(conf) 
    val sQLContext = new SQLContext(sc) 
    sQLContext 
    } 

    def stopSparkContext() = sc.stop() 

    private def createSparkConf: SparkConf = { 
    val conf = ConfigLoader.conf 

    val masterPath = conf.getString("spark.master.path") 

    new SparkConf() 
     .setMaster(masterPath).setAppName("SparkContext") 
     .set("spark.driver.allowMultipleContexts" , "true") 
    } 
} 

in einer Konfigurationsdatei Sie ein Master-URL festlegen müssen das ist, was es aussieht wie für die lokale Box

spark.master.path="local[*]" 

auch die

set("spark.driver.allowMultipleContexts" , "true") 

ist nur für lokale Tests verwende ich die Fabrik wie diese

val sqlc = SparkContextFactory.createSparkSQLContext 
+0

Auch wenn Sie VM Argument nicht geben wollen oder in Konfigurationsdatei wie spark.master.path = "local [*]", beim Erstellen von SparkConf können Sie auch Ihre Konfiguration angeben. val conf = new SparkConf(). setAppName ("Anwendungsname"). setMaster ("local"). – Nishan