更多详情如下:---
我们有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
答案 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!"