这是一个非常棒的问题。
我正在尝试了解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/"
感谢您的帮助。
答案 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/"