Ошибка «Нет подходящего драйвера» при использовании sparklyr :: spark_read_jdbc для запроса базы данных SQL Azure из Azure Databricks - PullRequest
0 голосов
/ 25 июня 2019

Я пытаюсь подключиться к базе данных SQL Azure из записной книжки Databricks с помощью функции sparklyr :: spark_read_jdbc. Я аналитик без компьютерных знаний (помимо R и SQL) или предыдущего опыта использования Spark или jdbc (ранее я использовал локальные экземпляры R для подключения к той же базе данных SQL через odbc), поэтому я прошу прощения, если я неправильно понял что-то жизненно важное.

Мой код:

sc <- spark_connect(method = "databricks")

library(sparklyr)
library(dplyr)

config <- spark_config()

db_tbl <- sc %>%
  spark_read_jdbc(sc,
              name    = "myresults",  
              options = list(url      = "mysqlserver.database.windows.net",
                             user     = "adminuser",
                             password = "adminpassword",
                             dbtable  = "(SELECT 
[Post_Sector]
,[People]
,[Field_1]
,[Field_2]
,[Field_3]
FROM [myschema].[mytable]) as my_query"))

Что приводит к ошибке:

Ошибка: java.sql.SQLException: нет подходящего драйвера на java.sql.DriverManager.getDriver (DriverManager.java:315) в org.apache.spark.sql.execution.datasources.jdbc.JDBCOptions $$ anonfun $ 6.apply (JDBCOptions.scala: 105) в org.apache.spark.sql.execution.datasources.jdbc.JDBCOptions $$ anonfun $ 6.apply (JDBCOptions.scala: 105) в scala.Option.getOrElse (Option.scala: 121)

(Я сократил список мест, в которых не удается найти подходящий драйвер, так как он очень длинный.)

Я установил в кластер "azure_sqldb_spark_1_0_2_jar_with_dependencies.jar" и "sqljdbc42.jar", а также библиотеку Maven "com.microsoft.azure:azure-sqldb-spark:1.0.2".

Я также попытался указать местоположение драйвера как таковое:

 config$`sparklyr.shell.driver-class-path` <- "dbfs:/FileStore/jars/3db936ce_5bda_4344_b102_32c0dcae2f87-azure_sqldb_spark_1_0_2_jar_with_dependencies-7114d.jar"

но это не мешает сообщению об ошибке.

Я могу подключиться к базе данных, используя:

%scala

//Connect to database:

import com.microsoft.azure.sqldb.spark.config.Config
import com.microsoft.azure.sqldb.spark.connect._

// Aquire a DataFrame collection (val collection)

val my_connection = Config(Map(
  "url"          -> "mysqlserver.database.windows.net",
  "databaseName" -> "mydatabase",
  "dbTable"      -> "mytable",
  "user"         -> "adminuser",
  "password"     -> "adminpassword"
))

val collection = sqlContext.read.sqlDB(my_connection)
collection.show()

Таким образом, учетные данные подключения не являются проблемой. Однако я не знаю, как использовать sparklyr для доступа к этому соединению и выполнять SQL-запросы к нему для генерации R-данных (или Spark-данных, которые я могу преобразовать в R-данные), поэтому я все еще надеюсь, что смогу получить соединение через sparklyr на работу.

Заранее спасибо за любой совет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...