r - 使用 Sparklyr 连接来自 2 个不同数据库的表

标签 r sparklyr

这是我调用 Sparklyr session 后的当前方式:

dbGetQuery(sparkContext, "USE DB_1")

df_1 <- tbl(sparkContext, "table_1")

dbGetQuery(sparkContext, "USE DB_2")

df_2 <- tbl(sparkContext, "table_2")

df <- df_1 %>% inner_join(df_2, by = c("col_1" = "col_2"))

nrow(df))

我遇到的错误:

"Error: org.apache.spark.sql.AnalysisException: Table or view not found: table_1"

我认为 Sparklyr 不(直接)支持连接来自 2 个数据库的表。我想知道是否有人对这个问题有一个优雅的解决方案

最佳答案

您可以在传递给 dbGetQuery 函数的 Spark SQL 语法中指定数据库,例如:

df_1 <- dbGetQuery(sc, "select * from db_1.table_1")

但是,请注意 dbGetQuery 将数据作为 R 数据帧收集到驱动程序,因此您可能希望在 dbGetQuery 中进行连接,例如:

df <- dbGetQuery(sc,"select * from db_1.table_1 A inner join db_2.table_2 B where A.col_1 = B.col_2)

(或者,如果您的数据集非常大,但您想通过对 R 更友好的 API 而不是 Spark SQL 进行聚合,则可以使用 SparkR。)

关于r - 使用 Sparklyr 连接来自 2 个不同数据库的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44105521/

相关文章:

r - sparklyr::sdf_quantile() 错误

r - 在 R 中使用 dplyr::if_else 条件创建新列

r - 分组/汇总时如何保留列?

固定长度的随机子集,使得每个组至少出现 N 次

r - 加入sparklyr后过滤出错

r - sparklyr 特征转换函数导致错误

使用 Sparklyr 包时,R 未检测到安装的最新 Java 版本 (1.8)

r - 同时使用SparkR和Sparklyr

r - 统计过去1年内某事件发生的次数

r - r 中具有列约束的唯一行