2017-02-28 26 views
0

更多详细信息如下:---reg:sqlContext的库依赖是什么?

我们有spark环境1.6.1,scala版本2.10.5(OpenJDK 64位服务器VM,Java 1.8.0_77)。

我用“库处理”选项作为“将所需库提取到生成的jar中”制作了一个可运行jar。 我执行火花ENV罐子,下面火花提交选项

火花提交--class spark_sqlserver_Conn.jar --master纱

我没有进出的#1一些研究,我也找到解决方案,但他们不适合我。

那么,我想配置什么是正确的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) 

      } 
     } 

我的日食被配置为“C:\ Program Files文件\的Java \ jre1 .8.0_121 \ BIN \服务器\ jvm.dll”这个

日食MARS2

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

问候, Amitesh Sahay

+0

你能发布你的pom文件吗? – FaigB

+0

\t org.apache.spark 火花sql_2.10 1.6.1 \t org.scala琅 阶编译 2.10.4 org.apache。火花 火花core_2.10 1.6.1 user3521180

回答

0

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

在Eclipse中,右键单击项目→构建路径→配置构建路径。在Libraries选项卡下,单击Add Jrs或添加外部JAR并提供Jar。

+0

巴拉吉你好,是的,我可以说,它更多的JDBC驱动程序类路径中。但我真的不知道如何解决它。我试着根据你的指示寻找班级路径,但有很多选择,请指导我到那个确切的路径 – user3521180

+0

你好巴拉吉,我不知道你想传达什么。我移动了sqljdbc4.jar,然后尝试了,但是它不能正常工作 – user3521180

+0

@ user3521180刚刚更新了我的答案 – BDR

0

首先改变你的代码像

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!" 
+0

嗨,我的spark-submit语法是正确的,我已经在许多级别进行了交叉验证,在发布这里时,我可能犯了一个错误。我的主要意图是创建一个jar,其中包括每个依赖项,以便我们不必提供任何命令行参数。无论如何,我仍然会尝试您的建议 – user3521180

+0

我刚刚按照您的指示执行, spark-submit --class com.xxx.SQLConn spark_sqlserver_Conn.jar --jars /usr/iop/123/spark/lib/sqljdbc4.jar --deploy-mode cluster --master yarn。 我仍然得到相同的错误 – user3521180

+0

编辑您的代码类似于回答 – FaigB