【问题标题】:How to row bind two Spark dataframes using sparklyr?如何使用 sparklyr 行绑定两个 Spark 数据帧?
【发布时间】:2019-01-22 20:58:23
【问题描述】:

我尝试了以下方法来行绑定两个 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 数据帧绑定在一起最有效的方法是什么?

【问题讨论】:

    标签: r apache-spark dplyr sparklyr


    【解决方案1】:

    您可以使用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)
    )
    

    【讨论】:

      猜你喜欢
      • 2023-02-09
      • 2020-12-30
      • 2017-04-27
      • 2018-06-25
      • 2019-12-11
      • 2019-11-26
      • 2018-01-15
      • 2020-06-07
      • 1970-01-01
      相关资源
      最近更新 更多