将 sparklyr 与 Oracle 数据库连接结合使用



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

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

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

这是我所做的:

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

我分别实现了一个Spark独立集群,其中一些计算机位于同一本地网络上,但与Windows服务器隔离:通过使用这个Spark集群,我想使用spark_connect()sparklyr包的功能将我的客户端计算机(连接到我的Oracle数据库)连接到Spark集群。 作为简历,我的目标是使用 Spark 独立集群来执行并行处理(例如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)

最新更新