【问题标题】:Spark program cannot open SQL Server context?Spark 程序无法打开 SQL Server 上下文?
【发布时间】:2017-10-11 02:32:09
【问题描述】:

在文件main.scala中,

import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
import java.sql._

object ConnTest extends App {
  val conf = new SparkConf()
  val sc = new SparkContext(conf.setAppName("Test").setMaster("local[*]"))
  val sqlContext = new org.apache.spark.sql.SQLContext(sc)

  sc.stop()
}

但是,sbt run 出现以下错误。

[信息] 将 1 个 Scala 源编译到 C:\Users\user1\IdeaProjects\sqlServer\target\scala-2.11\classes... [错误] C:\Users\user1\IdeaProjects\sqlServer\src\main\scala\main.scala:9: 类型 SQLContext 不是包 org.apache.spark.sql 的成员 [错误] val sqlContext = new org.apache.spark.sql.SQLContext(sc) [错误] ^ [错误] 发现一个错误 [错误] (compile:compileIncremental) 编译失败 [错误] 总时间:1 s,完成时间 2017 年 5 月 11 日 6:11:47 PM

【问题讨论】:

  • 首先,您的依赖项是什么 - sql 必须显式设置?此外,您不应该使用 sbt run for spark,而是使用 spark-submit。
  • 我应该先使用 SBT 编译代码。也许我不应该使用“运行”?

标签: sql-server scala apache-spark


【解决方案1】:

您应该使用具有单一入口点 SparkSession 的 Spark 2。您可以将SQLContextSparkContext 创建为

val sparkSession = SparkSession.builder().master("local[*]").getOrCreate()

val sc = sparkSession.sparkContext
val sqlC = sparkSession.sqlContext

包含 spark core 和 spark sql 的依赖

libraryDependencies += "org.apache.spark" % "spark-core_2.11" % "2.1.1"

libraryDependencies += "org.apache.spark" % "spark-sql_2.11" % "2.1.1"

【讨论】:

  • SQL server需要下载jdbc驱动吗?
  • Spark 不包含任何 JDBC 驱动程序,您有责任在应用程序包或其他类路径项中提供它们。
  • @ShankarKoirala 不,我正在从 Microsoft Sql Server 读取数据。
  • 你需要自己添加和打包jar。您还可以在 spark-submit 期间提供 jar
【解决方案2】:

你的类路径是正确的,请仔细检查你的maven或sbt配置

在 maven 中,你应该添加这个特定的依赖

<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-core_2.11</artifactId>
    <version>2.1.1</version>
    <scope>compile</scope>
</dependency>

sbt 也是类似的,如果你想在编译时添加这个依赖并用它打包一个 uber jar

但是有时 spark-core jar在运行时由集群提供,如果是在这种情况下,你可以调整范围值在你方便,也许provided

必须要说的是,sbt或者maven只是依赖控制工具,和spark的执行无关,你要把你的jar包上传到集群上,使用spark-submit程序运行它!

请查看 spark 示例的社区文档,并尝试一下

http://spark.apache.org/examples.html

祝你好运!

【讨论】:

    猜你喜欢
    • 2014-11-09
    • 2014-01-30
    • 1970-01-01
    • 2016-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-09
    • 1970-01-01
    相关资源
    最近更新 更多