Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server spark submit不能引用“"--“罐子”;当代码在火花壳中工作时?_Sql Server_Scala_Apache Spark_Jdbc_Sbt - Fatal编程技术网

Sql server spark submit不能引用“"--“罐子”;当代码在火花壳中工作时?

Sql server spark submit不能引用“"--“罐子”;当代码在火花壳中工作时?,sql-server,scala,apache-spark,jdbc,sbt,Sql Server,Scala,Apache Spark,Jdbc,Sbt,我使用intelliJ创建了一个sbt项目。我在项目的lib文件夹中复制了所需的jdbcjarsqljdbc42.jarsbt包已成功完成。我通过sparkshell--driver类路径C:\sqljdbc_6.0\chs\jre8\sqljdbc42.jar在Windows上启动了spark import org.apache.spark.SparkContext import org.apache.spark.SparkContext._ import org.apache.spark.S

我使用intelliJ创建了一个sbt项目。我在项目的
lib
文件夹中复制了所需的jdbcjar
sqljdbc42.jar
<代码>sbt包已成功完成。我通过
sparkshell--driver类路径C:\sqljdbc_6.0\chs\jre8\sqljdbc42.jar在Windows上启动了spark

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[*]"))

  // The following four statements work if running interactively in the Spark shell
  val sqlContext = new org.apache.spark.sql.SQLContext(sc)
  val jdbcSqlConn = "jdbc:sqlserver://...;databaseName=...;user=...;password=...;"
  val jdbcDf = sqlContext.read.format("jdbc").options(Map(
        "url" -> jdbcSqlConn,
        "dbtable" -> "testTable"
      )).load()
  jdbcDf.show(10)

  sc.stop()
}
但是,以下
spark submit
命令出现了错误

spark-submit.cmd --class ConnTest --master local[4] .\target\scala-2.11\test_2.11-1.0.jar
spark-submit.cmd --class ConnTest --master local[4] .\target\scala-2.11\test_2.11-1.0.jar --jars \sqljdbc_6.0\enu\jre8\sqljdbc42.jar
线程“main”java.sql.SQLException中的异常:没有合适的驱动程序 位于java.sql.DriverManager.getDriver(未知源) 位于org.apache.spark.sql.execution.datasources.jdbc.jdboptions$$anonfun$7.apply(jdboptions.scala:84) 位于org.apache.spark.sql.execution.datasources.jdbc.jdboptions$$anonfun$7.apply(jdboptions.scala:84) 位于scala.Option.getOrElse(Option.scala:121) 位于org.apache.spark.sql.execution.datasources.jdbc.jdboptions.(jdboptions.scala:83) 位于org.apache.spark.sql.execution.datasources.jdbc.jdbcopies。(jdbcopies.scala:34) 位于org.apache.spark.sql.execution.datasources.jdbc.jdbrelationprovider.createRelation(jdbrelationprovider.scala:32) 位于org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:330) 位于org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:152) 位于org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:125) 在ConnTest$.delayedEndpoint$ConnTest$1(main.scala:14) 在ConnTest$delayedInit$body.apply(main.scala:6) 在scala.Function0$class.apply$mcV$sp处(Function0.scala:34) 在scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12)中 位于scala.App$$anonfun$main$1.apply(App.scala:76) 位于scala.App$$anonfun$main$1.apply(App.scala:76) 位于scala.collection.immutable.List.foreach(List.scala:381) 位于scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:35) 位于scala.App$class.main(App.scala:76) 在ConnTest$.main(main.scala:6) at ConnTest.main(main.scala) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 位于sun.reflect.NativeMethodAccessorImpl.invoke(未知源) 在sun.reflect.DelegatingMethodAccessorImpl.invoke处(未知源) 位于java.lang.reflect.Method.invoke(未知源) 位于org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:743) 位于org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:187) 位于org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:212) 位于org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:126) 位于org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala) 更新: spark代码可以工作,如果我直接在spark shell中运行语句,我可以看到表内容

更新2: 当运行
spark submit

17/05/15 16:12:30信息SparkContext:添加的JAR文件:/C:/sqljdbc_6.0/enu/jre8/sqljdbc42.JAR位于spark://10.8.159.130:7587/jars/sqljdbc42.jar 时间戳为1494879150052

可尝试的几个选项:

A.编辑spark-defaults.conf并修改以下字段:

spark.driver.extraClassPath/path/to/jar/*

spark.executor.extraClassPath/path/to/jar/*

B.在代码中设置路径:

val conf=new SparkConf()
conf.set(“spark.driver.extraClassPath”,“/path/to/jar/*”)
val sc=新的SparkContext(配置)

C.尝试使用
--jars=local:
--jars“C:\sqljdbc\u 6.0\chs\jre8\sqljdbc42.jar”

在Windows上运行Spark时,相应地编辑jar路径

spark-submit.cmd--class-ConnTest--master local[4]。\target\scala-2.11\test\u 2.11-1.0.jar--jars=local:C:\sqljdbc\u 6.0\chs\jre8\sqljdbc42.jar

尝试以下几个选项:

A.编辑spark-defaults.conf并修改以下字段:

spark.driver.extraClassPath/path/to/jar/*

spark.executor.extraClassPath/path/to/jar/*

B.在代码中设置路径:

val conf=new SparkConf()
conf.set(“spark.driver.extraClassPath”,“/path/to/jar/*”)
val sc=新的SparkContext(配置)

C.尝试使用
--jars=local:
--jars“C:\sqljdbc\u 6.0\chs\jre8\sqljdbc42.jar”

在Windows上运行Spark时,相应地编辑jar路径


spark-submit.cmd--class-ConnTest--master local[4]。\target\scala-2.11\test\u 2.11-1.0.jar--jars=local:C:\sqljdbc\u 6.0\chs\jre8\sqljdbc42.jar
设置另一个选项解决了这个问题

"driver" -> "com.microsoft.sqlserver.jdbc.SQLServerDriver",

设置另一个选项解决了这个问题

"driver" -> "com.microsoft.sqlserver.jdbc.SQLServerDriver",

--jars…
放在应用程序jar arg之前如何?我在windows中不使用spark,但在Linux/Mac中,应用程序jar arg排在最后<代码>用法:spark submit[options][app arguments]
其中[options]类似于--jar和[app arguments]作为参数传递给实际的应用程序(在“main”函数中)。只是尝试将应用程序jar移动到最后一个位置,但仍然出现错误。
sc.getConf.get(“spark.jars”)
返回了什么?只需在应用程序中使用println。它返回
res3:String=”“
。我在sparkshell中运行了它。当
--jars…
放在应用程序jar arg之前如何?我在windows中不使用spark,但在Linux/Mac中,应用程序jar arg排在最后<代码>用法:spark submit[options][app arguments]其中[options]类似于--jar和[app arguments]作为参数传递给实际的应用程序(在“main”函数中)。只是尝试将应用程序jar移动到最后一个位置,但仍然出现错误。
sc.getConf.get(“spark.jars”)
返回了什么?只需在应用程序中使用println即可