无法构建简单的SparkSQL应用程序

时间:2014-07-14 17:34:23

标签: sbt apache-spark

这是一个非常棒的问题。

我正在尝试了解SparkSQL。我一直在关注这里描述的例子: http://spark.apache.org/docs/1.0.0/sql-programming-guide.html

在Spark-shell中一切正常,但是当我尝试使用sbt构建批处理版本时,我收到以下错误消息: object sql is not a member of package org.apache.spark

不幸的是,我对sbt很新,所以我不知道如何解决这个问题。我怀疑我需要包含其他依赖项,但我无法弄清楚如何。

这是我正在尝试编译的代码:

/* 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)
 }
}

在我尝试创建SQLContext的行上标记了错误。

以下是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/"

感谢您的帮助。

3 个答案:

答案 0 :(得分:32)

通常情况下,提问的行为帮助我找到了答案。答案是在sbt文件中添加以下行。

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

我也意识到上面的小程序还有一个问题。调用createSchemaRDD时有太多参数。该行应如下所示:

val table = createSchemaRDD(records)

答案 1 :(得分:9)

谢谢!我在Maven中构建Scala应用程序时遇到了类似的问题。基于您对SBT所做的操作,我添加了相应的Maven依赖项,如下所示,现在我可以编译并生成jar文件。

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

答案 2 :(得分:0)

我遇到了类似的问题,在我的情况下,我只是用scalaVersion复制粘贴下面的sbt设置:=&#34; 2.10.4&#34;但在我的环境中,我实际上有scala版本2.11.8

如此更新&amp;再次执行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/"