我正在尝试使用spark_read_jdbc
从MS SQL数据库读取时进行本地开发。这需要连接到数据库。
我有以下spark_connect
。
library(sparklyr)
# spark_install()
conf <- spark_config()
conf$`sparklyr.cores.local` <- 4
conf$`sparklyr.shell.driver-memory` <- "16G"
conf$spark.memory.fraction <- 0.9
sc <- spark_connect(master = "local",
version = "2.1.0",
config = conf)
b <- sparklyr::spark_read_jdbc(sc,
name ="my_table" ,
options = list(url = "jdbc:sqlserver://<server>",
user = keyring::key_get("uid"),
driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver",
password = keyring::key_get("pwd"),
dbtable = "<tablename>"))
但是当我运行上述代码时,出现以下错误
错误:java.lang.ClassNotFoundException:com.microsoft.sqlserver.jdbc.SQLServerDriver
似乎找不到我的驱动程序。如何调试此错误。
答案 0 :(得分:0)
应该有帮助。例如您找不到俄文答案:https://ru.stackoverflow.com/questions/645847/java-lang-classnotfoundexception-com-microsoft-sqlserver-jdbc-sqlserverdriver
Dmitriy评论的近似翻译: 我已经通过将sqljdbc4.jar再次重新安装到项目的lib文件夹并再次将路径lib / sqljdbc4.jar插入到classpath来解决了此问题。另外,我已经将请求执行功能移到了单独的项目类中,以实现辅助功能,并且都开始工作了……所以您只需要几次开/关库就可以了。
答案 1 :(得分:0)
我认为您必须在Spark连接中包括驱动程序路径。因此,请在配置文件中添加以下代码 conf $ sparklyr.shell.driver-class-path
<-“驱动程序文件路径”