reg:sqlContext的库依赖是什么?

时间:2017-02-28 11:32:36

标签: eclipse scala maven apache-spark jdbc

更多详情如下:---

我们有spark环境1.6.1,Scala版本2.10.5(OpenJDK 64位服务器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”

eclipse MARS2

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

此致 Amitesh Sahay

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分: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"

e.g。

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