【问题标题】:reg: what is the library dependency for sqlContext?reg: sqlContext 的库依赖是什么?
【发布时间】:2017-02-28 11:32:35
【问题描述】:

详情如下:---

我们有 spark 环境 1.6.1,Scala 版本 2.10.5(OpenJDK 64-Bit Server VM,Java 1.8.0_77)。

我使用“库处理”选项作为“将所需库提取到生成的 jar”中制作了一个可运行的 jar。 我在 spark env 中执行了 jar,使用以下 spark-submit 选项

spark-submit --class spark_sqlserver_Conn.jar --master yarn

我在 Stackoverflow 内外做了一些研究,确实找到了解决方案,但它们对我不起作用。

那么,我想配置的正确的 maven 依赖项是什么?

我也收到如下错误:- 在线程“main”中 java.sql.SQLException: 没有合适的驱动程序

    package spark_sqlserver.tblcreation

            import java.util.Properties
            import java.sql.DriverManager
            import java.sql.Connection
            import org.apache.spark.SparkContext
            import org.apache.spark.SparkConf

            object SQLServerTbleCreate {  
                def main (args: Array[String]){              
                  val conf = new SparkConf()
                                 .setAppName("test SQL")
                                 .setMaster("path to Spark Master Server")
                                 .set("spark.executor.memory","1g");
                  val sc = new SparkContext(conf)
                  val sqlContext = new org.apache.spark.SQLContext(sc)  

                  var props= new java.util.Properties()
                  props.setProperty("driver",                                                                                                                                                                          "com.microsoft.sqlserver.jdbc.SQLServerDriver")

         val jdbcDF = sqlContext.read.format("jdbc").options(Map( "url" ->      "jdbc:sqlserver://xxx:xxxx/xxx?user=xxxxx&password=xxxxx", 
"dbtable"-> "xxxx")).load()

         val test = sqlContext.sql("SELECT xxxx ,xxxx FROM xxxxx")
         test.show(10)

          }
        }

我的eclipse配置了“C:\Program Files\Java\jre1.8.0_121\bin\server\jvm.dll”

日食 MARS2

我通过“构建路径”捆绑了 sqljdbc4-2.0.jar

问候, 阿米特什·萨哈伊

【问题讨论】:

  • 你能发布你的 pom 文件吗?
  • org.apache.sparkspark-sql_2.101.6.1org.scala-langscala-compiler2.10.4org.apache.spark spark-core_2.101.6.1

标签: eclipse scala maven apache-spark jdbc


【解决方案1】:

首先更改您的代码,例如

package spark_sqlserver.tblcreation

import org.apache.spark.SparkContext
import org.apache.spark.sql.SQLContext
import org.apache.spark.SparkConf

object SQLServerTbleCreate {  
    def main (args: Array[String]){              
         val conf = new SparkConf()
                    .setAppName("test SQL")                    
                    .set("spark.executor.memory","1g");
        val sc = new SparkContext(conf)
        val sqlContext = new org.apache.spark.SQLContext(sc)  

        val jdbcSqlConnStr = "jdbc:sqlserver://xxx.xxx;databaseName=xxx;user=xxx;password=xxx;"

        val jdbcDF = sqlContext.read.format("jdbc").options(Map("url" -> jdbcSqlConnStr, "dbtable" -> jdbcDbTable)).load()


         val test = sqlContext.sql("SELECT xxxx ,xxxx FROM xxxxx")
         test.show(10)

        }
}

然后你需要提供正确的语法来启动你的应用程序,并且还需要使用 --jars 参数提供所需的依赖项:

spark-submit --class "your main class full reference" --master yarn --deploy-mode cluster --jars "full path to your jars with comma delimiter" "your jar package" "args"

例如

spark-submit --class com.run.Main --master yarn --deploy-mode cluster --jars /home/user/test.jar,/home/user/log.jar application.jar "Hello!"

【讨论】:

  • 嗨,我的 spark-submit 语法是正确的,我已经在多个级别进行了交叉验证,在这里发帖时,我可能犯了一个错误。我的主要目的是制作一个 jar ,其中包含每个依赖项,这样我们就不需要提供任何命令行参数。无论如何,我仍然会尝试你的建议
  • 我刚刚按照你的指示执行了 spark-submit --class com.xxx.SQLConn spark_sqlserver_Conn.jar --jars /usr/iop/123/spark/lib/sqljdbc4.jar --deploy-模式集群 --master 纱线。我仍然得到同样的错误
  • 请解释一下“application.jar”,我会提到什么?
  • 应用程序 jar 是你的 uber jar 或 fat jar,其中包括你的 main/runner 类
  • 我试图完全按照你让我执行的方式执行 jar 文件,但现在,我收到新错误 spark-submit --class com.sqlSpark.SQLConn --master yarn --deploy-模式集群 --jars /usr/iop/4/spark/lib/sqljdbc4.jar application-jar spark_sqlserver_Conn.jar。下面是错误 FileNotFoundException: File file:/home/METNET/at732615/poc/application-jar 不存在
【解决方案2】:

错误似乎是类路径问题而不是版本冲突。确保您的驱动程序在您的类路径中。您也可以通过右键单击项目来确保它来自 Eclipse。

在 Eclipse 中,通过右键单击项目 → 构建路径 → 配置构建路径。在 Libraries 选项卡下,单击 Add Jars 或 Add External JARs 并提供 Jar。

【讨论】:

  • 您好 Balaji,是的,我可以说它更像是 jdbc 驱动程序的类路径。但我真的不知道如何解决它。我尝试按照您的说明查找课程路径,但有很多选择,请指导我找到确切的路径
  • 你好 Balaji,我不知道你想表达什么。我将 sqljdbc4.jar 向上移动并尝试过,但它也不起作用
  • 你好 Balaji,我已经这样做了,我可以在我的项目中看到我最初提供的 sqljdbc4.jar。
猜你喜欢
  • 2018-04-10
  • 2019-03-31
  • 1970-01-01
  • 2018-02-08
  • 1970-01-01
  • 1970-01-01
  • 2011-08-10
  • 2010-10-11
  • 2012-03-09
相关资源
最近更新 更多