如何在本地模式下使用spark_read_jdbc

时间:2019-04-15 21:59:46

标签: sparklyr

我正在尝试使用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

似乎找不到我的驱动程序。如何调试此错误。

2 个答案:

答案 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 <-“驱动程序文件路径”