【问题标题】:Intellij setup scala and sparkIntellij 设置 scala 和 spark
【发布时间】:2016-09-29 17:50:48
【问题描述】:

我有 Intellij IDEA 社区版。我需要为 IntellJ 配置 Apache Spark 的帮助。我想通过 Scala 从 GA 获取数据..我使用 crealytics..

我的 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"
)

和 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", "xxxxxxxxx@developer.gserviceaccount.com")
    .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()
}

当我运行对象分析时,出现错误: 未找到:值 sc

我认为 Spark 配置有问题,因为 sc 是 SparkContext,但我不知道它在哪里。

有什么提示吗?

【问题讨论】:

    标签: scala intellij-idea apache-spark google-analytics apache-spark-sql


    【解决方案1】:

    简答

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

    .....

    通常我使用 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")
      }
    }
    

    在配置文件中,您需要设置一个主 url,这就是本地框的样子

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

    也是

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

    只是为了本地测试我这样使用工厂

    val sqlc = SparkContextFactory.createSparkSQLContext
    

    【讨论】:

    • 另外,如果你不想给 VM 参数或像 spark.master.path="local[*]" 这样的配置文件,在创建 SparkConf 时你也可以指定你的配置。 val conf = new SparkConf().setAppName("App Name").setMaster("local").
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-05
    • 1970-01-01
    • 2017-01-28
    • 2018-05-07
    • 1970-01-01
    • 1970-01-01
    • 2017-12-01
    相关资源
    最近更新 更多