我有一个R脚本,该脚本使用odbc :: dbConnect连接到SQL数据库(一些数据库是Azure,一些是本地的,但是通过公司的网络连接到Azure VPN,尽管我不了解网络基础架构本身),然后使用DBI :: dbGetQuery运行一系列相当复杂的SQL查询,并将结果存储为R数据帧,可以对这些数据帧进行操作并将其输入到我的模型中。
由于本地PC上的内存不足,无法运行脚本,因此我不得不将脚本传输到Databricks笔记本,并在具有更强大驱动程序节点的群集上运行它。但是我时间不多了,无法或不愿意完全重写所有内容以使其与sparkR / sparklyr兼容或可并行化。我只想将我的标准R脚本运行到与我已经编写的脚本尽可能接近的位置,并且只需进行最少的编辑即可与Spark兼容。
我知道odbc,RODBC和RJDBC软件包在Databricks笔记本上不起作用。我已经研究过使用SparkR :: read.jdbc和Sparklyr :: spark_read_jdbc(),但是它们直接从jdbc源读取到SparkR / sparklyr数据帧中,而不是创建可以通过DBI :: dbGetQuery访问的连接,我正在尝试做的。尽管似乎应该有可能,但我在任何地方都找不到有关如何执行此操作的资源。
我是否可以使用sparklyr(或必要时使用其他软件包)创建到数据库的连接对象,并且可以使用DBI :: dbGetQuery访问该对象?