r - 如何使用 sparklyr 行绑定(bind)两个 Spark 数据帧?

标签 r apache-spark dplyr sparklyr

我尝试了以下方法来行绑定(bind)两个 Spark 数据帧,但我给出了一条错误消息

library(sparklyr)
library(dplyr)
sc <- spark_connect(master = "local")
iris_tbl <- copy_to(sc, iris)
iris_tbl1 <- copy_to(sc, iris, "iris1")

iris_tbl2 = bind_rows(iris_tbl, iris_tbl1)

将两个 Spark 数据帧绑定(bind)在一起的最有效方法是什么?

最佳答案

您可以使用 dplyr::union_all

dplyr::union_all(iris_tbl1, iris_tbl1)

sparklyr::sdf_bind_rows :
sdf_bind_rows(
  iris_tbl %>% select(-Sepal_Length),
  iris_tbl1 %>% select(-Petal_Length)
)

您也可以使用 Spark 自己的 unionByName如果模式兼容,但列的顺序不匹配。
sdf_union_by_name <- function(x, y) {
  invoke(spark_dataframe(x), "unionByName", spark_dataframe(y)) %>% 
    sdf_register()
}

sdf_union_by_name(
  iris_tbl %>% select(Sepal_Length, Petal_Length),
  iris_tbl %>% select(Petal_Length, Sepal_Length)
)

关于r - 如何使用 sparklyr 行绑定(bind)两个 Spark 数据帧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51867901/

相关文章:

r - 是否有简单回归的快速估计(只有截距和斜率的回归线)?

r - 如何将列重命名为变量名 "in a tidyverse way"

r - 绘制汇总统计信息

apache-spark - Elasticsearch 支持 spark 2.4.2 和 scala 2.12

scala - 通过 UDF、Spark - Scala 加密 CSV 列

java - 为什么 Spark 在本地模式下失败并显示 "Failed to get broadcast_0_piece0 of broadcast_0"?

r - 函数中的主要 dplyr 函数

r - Pivot_longer 6 列至 3 列

r - 使用 dplyr 函数进行管道化时使用方括号进行子集化

r - roxygen 文档中的任意部分