使用SparkyR将数据从数据库传输到Spark
我在数据库中有一些数据,我想在Spark中使用SparkyR处理这些数据 我可以使用基于DBI的包将数据从数据库导入R使用SparkyR将数据从数据库传输到Spark,r,apache-spark,dataframe,sparklyr,R,Apache Spark,Dataframe,Sparklyr,我在数据库中有一些数据,我想在Spark中使用SparkyR处理这些数据 我可以使用基于DBI的包将数据从数据库导入R dbconn <- dbConnect(<some connection args>) data_in_r <- dbReadTable(dbconn, "a table") dbconnSparklyr>=0.6.0 您可以使用spark\u read\u jdbc 0.6.0 我希望有一个更优雅的解决方案,但这里有一个使用低级API的最小示例:
dbconn <- dbConnect(<some connection args>)
data_in_r <- dbReadTable(dbconn, "a table")
dbconnSparklyr>=0.6.0
您可以使用spark\u read\u jdbc
0.6.0
我希望有一个更优雅的解决方案,但这里有一个使用低级API的最小示例:
- 确保Spark可以访问所需的JDBC驱动程序,例如通过将其坐标添加到
Spark.jars.packages
。例如,对于PostgreSQL(针对当前版本进行调整),您可以添加:
spark.jars.packages org.postgresql:postgresql:9.4.1212
至SPARK\u HOME/conf/SPARK defaults.conf
- 加载数据并注册为临时视图:
name <- "foo"
spark_session(sc) %>%
invoke("read") %>%
# JDBC URL and table name
invoke("option", "url", "jdbc:postgresql://host/database") %>%
invoke("option", "dbtable", "table") %>%
# Add optional credentials
invoke("option", "user", "scott") %>%
invoke("option", "password", "tiger") %>%
# Driver class, here for PostgreSQL
invoke("option", "driver", "org.postgresql.Driver") %>%
# Read and register as a temporary view
invoke("format", "jdbc") %>%
invoke("load") %>%
# Spark 2.x, registerTempTable in 1.x
invoke("createOrReplaceTempView", name)
- 使用
dplyr
加载临时视图:
dplyr::tbl(sc, name)
- 请务必阅读更多JDBC选项,重点是
partitionColumn
、*Bound
和numPartitions
- 有关更多详细信息,请参见示例和
invoke("options", as.environment(list(
user="scott", password="tiger", url="jdbc:..."
)))
dplyr::tbl(sc, name)