使用 sparklyr 与 Oracle 数据库连接

use sparklyr with Oracle database connection

我想得到一些关于组合以下 R 包的方法的解释:

-odbc : 用于连接现有的 Oracle 数据源

-sparklyr :用于在独立的 Spark 集群上计算此数据

这是我所做的:

-在我的客户端计算机上,我使用 ODBC R 包中的 dbConnect() 函数连接到现有的 Oracle 数据库。此 Oracle 数据库托管在 windows 服务器上。

我单独实现了一个 Spark 独立集群,其中一些计算机位于同一本地网络但与 windows 服务器隔离:通过使用这个 Spark 集群,我想使用 spark_connect() 的功能sparklyr 用于将我的客户端计算机(连接到我的 Oracle 数据库)连接到 Spark 集群的程序包。 作为简历,我的 objective 包括使用 spark 独立集群对存储在我的 oracle 数据库中的数据执行并行处理(例如 ml_regression_trees)。

有人知道 sparklyr 上是否有直接执行所有这些操作的功能吗? (我的意思是:连接到Oracle数据库+用Spark处理大数据)

非常感谢您的帮助(欢迎提出任何建议!)

知道您要求的是 ODBC 方式,这里有一个 JDBC 解决方案(可能对其他用户有用,因为问题标题中没有提到 ODBC。

您需要将 ojdbc7.jar 放在某个地方(在本例中是在您的工作目录中,但我建议将其存储在中央并在此处提供路径)。 更改所需的值,如 spark_home 等。 如果您在客户端计算机上 运行 R(而不是集群中的边缘节点),则可以使用 Livy 连接到 Spark。

library(sparklyr)
library(RJDBC)

##### Spark
config <- spark_config()
### tell config location of oracle jar
config[["sparklyr.jars.default"]] <- "ojdbc7.jar"
### example spark_home
sc <- spark_connect(master = "yarn-client",
                    spark_home = "/usr/lib/spark",
                    version = "2.2.0",
                    config = config)

datspark <- spark_read_jdbc(sc, "table", options = list(
  url = "jdbc:oracle:thin:@//<ip>:1521/<schema>",
  driver = "oracle.jdbc.OracleDriver",
  user = "user",
  password = "password",
  dbtable = "table"),
  memory = FALSE # don't cache the whole (big) table
  )

### your R code here

spark_disconnect(sc)