与Oracle数据库连接一起使用Sparkyr

与Oracle数据库连接一起使用Sparkyr,oracle,odbc,database-connection,rodbc,sparklyr,Oracle,Odbc,Database Connection,Rodbc,Sparklyr,我想得到一些关于如何组合以下R包的解释: -odbc:用于连接现有Oracle数据源 -SparkyR:用于在独立的Spark群集上计算此数据 以下是我所做的: -在我的客户机上,我使用ODBC R包中的dbConnect函数连接到现有的Oracle数据库。此Oracle数据库托管在windows服务器上 我单独实现了一个Spark独立群集,其中一些计算机位于同一本地网络上,但与windows服务器隔离:通过使用此Spark群集,我希望使用SparkyR软件包的Spark_connect功能将连

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

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

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

以下是我所做的:

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

我单独实现了一个Spark独立群集,其中一些计算机位于同一本地网络上,但与windows服务器隔离:通过使用此Spark群集,我希望使用SparkyR软件包的Spark_connect功能将连接到Oracle数据库的客户端计算机连接到Spark群集。 作为简历,我的目标是使用spark单机集群执行并行处理,例如存储在oracle数据库中的数据的ml_回归树

有人知道Sparkyr上是否有一个函数可以直接执行所有这些操作吗?我的意思是:连接到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)

知道您要求使用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)

我没有尝试ODBC,但当我从oracle向spark读取数据时,我使用spark\u read\u jdbc。如果您对JDBC解决方案感兴趣,我可以在这里发布。我没有尝试ODBC,但是当我从oracle向spark读取数据时,我使用spark\u read\u JDBC。如果您对JDBC解决方案感兴趣,我可以在这里发布。谢谢。。。工作得很好!刚刚不得不改成ojdbc6.jar,很好用。@Tarmar:这只是版本而已。看:谢谢!也为我工作。。。你知道有没有可能用SparkyR将名为datspark的spark表保存到我的电脑中,变成hdfs格式?@John:hdfs不是一种格式,而是一个文件系统。如果您想将csv或拼花文件写入hdfs see Hi,我尝试将其与远程oracle 12c数据库一起使用,并在本地计算机中设置spark。但我一直在出错。谢谢。。。工作得很好!刚刚不得不改成ojdbc6.jar,很好用。@Tarmar:这只是版本而已。看:谢谢!也为我工作。。。你知道有没有可能用SparkyR将名为datspark的spark表保存到我的电脑中,变成hdfs格式?@John:hdfs不是一种格式,而是一个文件系统。如果您想将csv或拼花文件写入hdfs see Hi,我尝试将其与远程oracle 12c数据库一起使用,并在本地计算机中设置spark。但我一直在犯错误。