これはかなり初心者向けの質問です。
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/"
助けてくれてありがとう。
よくあることですが、質問をするという行為は私が答えを理解するのに役立ちました。答えは、sbtファイルに次の行を追加することです。
libraryDependencies += "org.Apache.spark" %% "spark-sql" % "1.0.0"
上記の小さなプログラムにも追加の問題があることに気づきました。 createSchemaRDDの呼び出しに引数が多すぎます。その行は次のようになります。
val table = createSchemaRDD(records)
ありがとう! ScalaアプリをMavenでビルドしているときに同様の問題に遭遇しました。SBTで行ったことに基づいて、対応するMavenの依存関係を次のように追加しました。これで、jarをコンパイルして生成できますファイル。
<dependency>
<groupId>org.Apache.spark</groupId>
<artifactId>spark-sql_2.11</artifactId>
<version>1.2.1</version>
</dependency>
同様の問題が発生しました。私の場合、以下のsbt設定をオンラインからscalaVersion:= "2.10.4"でコピーして貼り付けただけですが、私の環境ではscalaバージョン2.11 .8
そのため、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/"